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