1、包含yield語法的函式叫做生成器,生成器可以儲存上一次執行的位置
2、執行包含yield語法的函式會得到乙個生成器,執行生成器的__next__方法就會執行函式的內容,遇到yield跳出,再執行__next__方法,返回函式之前跳出的位置,繼續執行,遇到yield跳出,...
## 生成器生成器def
func():
yield 1
yield 2
yield 3
yield 4a =func()
b = a.__next__
()print(b) #
1b = a.__next__
()print(b) #
2b = a.__next__
()print(b) #
3b = a.__next__
()print(b) #
4
3、用生成器實心xrange
## 用生成器實現xrange用生成器實現xrange
defxrange(num):
temp = -1
while
true:
temp = temp + 1
if temp >=num:
return
else
:
yield
temp
a = xrange(5)
b = a.__next__
()print(b) #
0b = a.__next__
()print(b) #
1b = a.__next__
()print(b) #
2b = a.__next__
()print(b) #
3b = a.__next__
()print(b) #
5
迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍歷一些巨大的或是無限的集合,比如幾個g的檔案訪問者不需要關心迭代器內部的結構,僅需通過next()方法不斷去取下乙個內容特點:
不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問
訪問到一半時不能往回退
便於迴圈比較大的資料集合,節省記憶體
## 用迭代器實現range用迭代器實現range
defrange(num):
temp = -1
while
true:
temp = temp + 1
if temp >=num:
return
else
:
yield
temp
#用for迴圈代替__next__方法
for i in range(5):
(i)'''
a = range(5)
b = a.__next__()
print(b) # 0
b = a.__next__()
print(b) # 1
b = a.__next__()
print(b) # 2
b = a.__next__()
print(b) # 3
b = a.__next__()
print(b) # 5
'''
python3生成器 Python3 生成器
python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...
Python(九)生成器
該系列文章用來記錄一下自己在b站學習python時,進行上機練習用的 使用 pycharm 2020.3.3 慕課 python語言基礎與應用 北京大學 陳斌 字幕校對 編寫程式,輸入兩個數,輸出它們的商,採用例外處理來處理兩種錯誤,給出使用者友好的提示資訊 1 除數為0 2 輸入了非數值 try ...
Python筆記003 生成器和生成器表示式
以下是我學習 流暢的python 後的個人筆記,現在拿出來和大家共享,希望能幫到各位python學習者。生成器使用yield做關鍵字,一次只返回乙個值給呼叫者,然後暫停執行,其作用是 節省記憶體空間。生成器可以用next 函式,也可以用for迭代的方式獲取元素值,中間還可以用close 來隨時終止生...