python學習筆記(8)迭代器和生成器

2022-07-01 13:27:14 字數 1087 閱讀 4247

迭代是python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter()next()

字串,列表或元組物件都可用於建立迭代器:

list=[1,2,3,4

]it=iter(list) #建立迭代器物件

print(next(it)) #輸出

1print(next(it)) #輸出

2

#for迴圈遍歷

list=[1,2,3,4

]it=iter(list) #建立迭代器物件

for x in

it: print(x) #輸出

1,2,3,4

#next函式

import sys # 引入 sys 模組

list=[1,2,3,4

]it=iter(list) #建立迭代器物件

while

true:

try:

print(next(it)) #輸出

1,2,3,4

except stopiteration:

sys.exit()

stopiteration 異常用於標識迭代的完成,防止出現無限迴圈的情況,在 __next__() 方法中我們可以設定在完成指定迴圈次數後觸發 stopiteration 異常來結束迭代。

在 20 次迭代後停止執行

在 python 中,使用了 yield 的函式被稱為生成器(generator)。

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。

呼叫乙個生成器函式,返回的是乙個迭代器物件。

Python學習筆記 迭代器和迭代器協議

術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...

Python學習筆記 迭代器

from collections import iterable from collections import iterator 可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for...

python學習筆記10(迭代器)

可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for迴圈的資料型別一般分兩種 1 集合資料型別,如list tuple dict set string 2 是generator,包括生...