迭代器和生成器

2021-08-26 11:57:07 字數 545 閱讀 8245

迭代器和生成器

迭代器

概念:迭代,即重複不斷得到乙個結果的過程,此次得到的結果即下次的初始值

迭代器協議:物件需要提供next方法,返回乙個結果值,或者引起stoplteration,終止迭代

應用方法:提供iter()和next方法

優點:惰性計算,不會佔很多記憶體;不依賴索引進行取值

缺點:無法獲知物件自身長度,除非取完值報錯;只能向前走,不能後退

生成器:

概念:只要函式內部包含yield關鍵字,返回值採用yield,而不是return,

該函式得到的結果就是生成器,每執行一次,返回乙個結果,在每個結果之間,將函式掛起,以便在下一次在離開地方執行

注:生成器就是迭代器,但是迭代器不一定是生成器

例項:

列表推到式,返回所有結果

a = [i%2 for i in range(10)]

生成器

b = (i % 2 for i in range(10))

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...