一、 迭代器
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...