Python程式設計之迭代器和生成器示例

2021-09-26 18:17:50 字數 1377 閱讀 8647

一、 迭代器

python中只要實現了__iter__和__next__方法的物件都可以稱之為迭代器,迭代器是乙個帶狀態的物件,可以記錄迭代的位置。

#!/usr/bin/env python3

class iterator:

def __iter__(self):

self.counter = 0

self.a = 0

self.b = 1

return self

def __next__(self):

if self.counter < 20:

tmp = self.a

self.counter = self.counter + 1

self.a, self.b = self.b, self.a+self.b

return tmp

else:

raise stopiteration

iterclass = iterator()

it = iter(iterclass)

for d in it:

print(d, end=" ")

print()

輸入結果:

0  1  1  2  3  5  8  13  21  34  55  89  144  233  377  610  987  1597  2584  4181
二、 生成器

python中的生成器是一種特殊的迭代器,因為生成器生成的是乙個迭代器物件,而這個迭代器中只有乙個值,也就是說生成器生成的這個迭代器只可以迭代一次。例如我們對乙個函式使用yield關鍵字進行值得返回,就可以實現python簡單的生成器。

#!/usr/bin/env python3

def fib(n):

a, b, counter = 0, 1, 0

while true:

if counter > n:

return

yield a

a, b = b, a+b

counter = counter + 1

f = fib(20)

while true:

try:

print(next(f), end=" ")

except stopiteration:

break

print()

輸入結果:

0  1  1  2  3  5  8  13  21  34  55  89  144  233  377  610  987  1597  2584  4181

Python核心程式設計之迭代器

迭代是一種訪問集合元素的一種方式。迭代器是一種可以記住遍歷位置的物件。可迭代物件不一定是迭代器,能用for遍歷的都是可迭代物件。可迭代物件包括 可以被next 函式呼叫並且返回下乙個值得物件是迭代器,如生成器就是迭代器 用於檢測是否為迭代物件 from collections.abc import ...

python迭代 Python迭代和生成

簡介在python中存在一種名叫迭代器的容器物件。顧名思義,這種物件能夠產生迭代的數值,在許多場合中,比如在機器學習領域,要從乙個迭代器裡不斷地提取樣本資料進行訓練。而生成器也是一種迭代器,因此在本文中將詳細介紹迭代器的知識。迭代器定義 迭代器也稱為游標,形象地理解為程式執行到 就在該處做個標記,下...

python基礎 可迭代物件和迭代器和生成器

參考自 參考自 可迭代物件 iterable 可直接作用於for迴圈的物件的統稱,如list tuple dict set str 生成器等。可以用isinstance 判斷乙個物件是否為iterable from collections import iterable isinstance ite...