Python中的迭代器和生成器

2022-08-12 14:39:14 字數 936 閱讀 2061

迭代器(iterator):迭代器可以看作是乙個特殊的物件,每次呼叫該物件時會返回自身的下乙個元素,從實現上來看,乙個迭代器物件必須是定義了__iter__()方法和next()方法的物件。所有的iterable可迭代物件均可以通過內建函式iter()來轉變為迭代器iterator,在這裡注意區別可迭代的與迭代器。

生成器表示式是通過乙個python表示式語句去計算一系列資料,但生成器定義的時候資料並沒有生成,而是返回乙個物件,這個物件只有在需要的時候才根據表示式計算當前需要返回的資料

python使用生成器對延遲操作提供了支援。所謂延遲操作,是指在需要的時候才產生結果,而不是立即產生結果。這有利於節省記憶體,特別是生成器進行科學計算時很有用;

生成器就是迭代器,除了next方法外,也可以通過for迴圈來遍歷出生成器中的內容;

生成器除了前面介紹的__next__、send方法外,還有throw、close方法:

使用send傳值:

# send傳值

def getdata():

i = 0

while i<5:

data = yield i

print('當前data:', data)

i += 1

return '暫無更多資料!'

x = getdata()

x.send(none)

print(next(x))

x.send('9999')

print(next(x))

print(next(x))

### 輸出內容

當前data: none

1當前data: 9999

當前data: none

3當前data: none

4###

python中迭代器和生成器

迭代器 迭代器的實質是實現了next 方法的物件,常見的元組 列表 字典都是迭代器。迭代器中重點關注兩種方法 iter 方法 返回迭代器自身。可以通過python內建函式iter 呼叫。next 方法 當next方法被呼叫的時候,迭代器會返回它的下乙個值,如果next方法被呼叫,但迭代器沒有只可以返...

python中迭代器和生成器

1 迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。迭代器有兩個基本...

python中迭代器和生成器

這裡的迭代可以指for迴圈,在python中,對於像list,dict和檔案等而言,都可以使用for迴圈,但是它們並不是迭代器,它們屬於可迭代物件。1.1什麼可迭代物件 最簡單的解釋 可以使用for.in.語句進行迴圈的物件,就是可迭代物件 iterable 可以使用isinstance 方法進行判...