迭代是python最強大的功能之一,是訪問集合元素的一種方式。
迭代器是乙個可以記住遍歷的位置的物件。
迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
迭代器有兩個基本的方法:iter()和next()。
建立迭代器
把乙個類作為乙個迭代器使用需要在類中實現兩個方法__iter__()與__next__()。
在 __next__() 方法中我們可以設定在完成指定迴圈次數後觸發stopiteration異常來結束迭代。
class mynumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise stopiteration
myclass = mynumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
在 python 中,使用了yield的函式被稱為生成器(generator)。
跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。
在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。
呼叫乙個生成器函式,返回的是乙個迭代器物件。
建立生成器
1.通過生成器函式
def func():
print("111")
yield 222
ret = func()
print(ret)
結果:
2.通過各種推導式來實現生成器
生成器表示式和列表推導式的語法基本上是一樣的. 只是把替換成()
gen = (i for i in range(10))
print(gen)
結果:
at 0x106768f10>
**知乎:
生成器優點總結:
1. 首先,生成器的好處是延遲計算,一次返回乙個結果。也就是說,它不會一次生成所有的結果,這對於大資料量處理,將會非常有用。
2. 除了延遲計算,生成器還能有效提高**可讀性。
使用生成器的注意事項:生成器只能遍歷一次。
生成器有什麼好處?
在python這門語言中,生成器毫無疑問是最有用的特性之一。與此同時,也是使用的最不廣泛的python特性之一。究其原因,主要是因為,在其他主流語言裡面沒有生成器的概念。正是由於生成器是乙個 新 的東西,所以,它一方面沒有引起廣大工程師的重視,另一方面,也增加了工程師的學習成本,最終導致大家錯過了p...
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...