python —— 迭代器与生成器
先看思维导图,更好的学习迭代器与生成器

迭代器
可迭代对象
可迭代协议:含有__iter__方法的对象。
可迭代的一定可以被for循环
比如:列表、元组、字典、字符串、集合等

迭代器
迭代器协议:含有__iter__和__next__方法的对象。 迭代器一定是可迭代对象,可迭代对象可以通过调用__iter__方法就能得到一个迭代器。
特点:1、 节省内存空间 2、很方便使用,且所有数据只取1次
t = (1,2,3,4,5) t1 = t.__iter__() print(t1) # 生成一个迭代器 for i in t1: print(i)


生成器
生成器本质:生成器本质就是迭代器
生成器的表现形式:
1、生成器函数: 含有yield的关键字的函数就是生成器函数
特点:调用函数后,函数不执行,但返回一个生成器。 每次调用__next__方法进行取值
def func(x,y): s = x+y yield s print('*****') yield 'admin' print('#####') ret = func(3,4) ret.__next__() #7 next(ret) #***** admin

2、生成器表达方式:
定义:把列表解释式[]换成() 得到的就是生成器表达式
特点:列表解释式和生成器表达式都是便利的编程方式,只是生成器表达式节省内存。
#筛选出1~10之间的偶数 ret = (i for i in range(1,11) if i%2==0) print(ret) #生成器 for i in ret: print(i,end=' ')


浙公网安备 33010602011771号