一句话概念
列表生成式——可以直接在列表里进行运算
生成器——一边循环一边计算的机制,称为生成器:generator(就是生成一个不运行的函数或者列表,即数据流)
第二句:生成器与列表的区别——生成器你不知道长度,就是一个数据流;list、dict、str你知道长度
迭代器——可以被next()函数调用并不断返回下一个值的对象称为迭代器
第二句:可迭代对象——可以直接作用于for循环的对象统称为可迭代对象:Iterable
第三句:生成器一定是迭代器,迭代器不一定是生成器
列表生成式
data = [1,2,2,34] data = [i*2 for i in data] #直接运算 data = [i*2 if i>3 else i-1 for i in data ] #三元运算 print(data)
生成器
第一种方法,列表推到式
data = (x for x in range(10)) #用小括号表示 print(data) #此时只打印函数内存,
第二种复杂式方式
#斐波那契数列 def fob(num): a,b = 0,1 count = 0 while count < num: count += 1 tmp = b #也可以写成a,b=b,a+b b = a + b a = tmp yield a #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人 # return a else:print("done") f = fob(1000000) for i in range(10): print(f.__next__())
迭代器
>>> from collections import Iterator >>> isinstance((x for x in range(10)), Iterator) True >>> isinstance([], Iterator) False >>> isinstance({}, Iterator) False >>> isinstance(‘abc‘, Iterator) False
#list、dict、str虽然是Iterable,却不是Iterator。通过iter()函数,可以把list、dict、str等Iterable变成Iterator使用 >>> isinstance(iter([]), Iterator) True >>> isinstance(iter(‘abc‘), Iterator) True
时间: 2024-11-01 11:39:32