python基础(十一):迭代器与生成器
迭代器
python中的序列类型都是可迭代的对象,例如列表、元组和字符串。可以通过for循环来遍历。
iter()函数可以手动的创建可迭代对象。迭代器一次只能取一个值,迭代器取值不能回退,只能一直往前取。当迭代器的值取尽的时候会报StopIteration的错误。
__iter__和__next__构成了迭代协议,迭代器拥有这两个魔术方法。
li=[1,2,3,4] li2=iter(li) print(next(li2)) print(li2.__next__()) >>>1 2
生成器
生成器就是迭代器,是在函数中加入yield语句来返回一个值。yield只能在函数中使用,并且会暂停函数执行并返回表达式结果。而且一次只能返回一个值。
由于生成器可以自己定义并且一次只取一个的特性多用来处理大数据量的数据,减少内存占用,使数据得到处理。同样多取也会报错。
def fun(): print(1) yield '一' print(2) yield '二' print(3) yield '三' f=fun() print(f.__next__()) print(f.__next__()) >>>1 一 2 二