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 二