迭代器和生成器

2022-08-28 15:15:30 字數 948 閱讀 8849

迭代器:

雙下方法 : 很少直接呼叫的方法。一般情況下,是通過其他語法觸發的

可迭代的 —— 可迭代協議 含有__iter__的方法('__iter__' in dir(資料))

可迭代的一定可以被for迴圈

迭代器協議: 含有__iter__和__next__方法

迭代器一定可迭代,可迭代的通過呼叫iter()方法就能得到乙個迭代器

迭代器的特點:

很方便使用,且只能取所有的資料取一次

節省記憶體空間

生成器:

生成器的本質就是迭代器

生成器的表現形式

生成器函式

生成器表示式

生成器函式:

含有yield關鍵字的函式就是生成器函式

特點:呼叫函式的之後函式不執行,返回乙個生成器

每次呼叫next方法的時候會取到乙個值

直到取完最後乙個,在執行next會報錯

寫生成器實現:有乙個檔案,從檔案裡分段讀取內容

readline

read(10)

在讀出來的內容前面加上乙個'***',再返回給呼叫者

def generator():

for i in range(20):

yield '哇哈哈%s'%i

g = generator()  #呼叫生成器函式得到乙個生成器

print(list(g))

ret = g.__next__()     #每一次執行g.__next__就是從生成器中取值,預示著生成器函式中的**繼續執行

print(ret)

num = 0

for i in g:

num += 1

if num > 50:

break

print(i)

從生成器中取值的幾個方法

next

for資料型別的強制轉換 : 占用記憶體

生成器和迭代器

可以直接作用於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...