learn Day13 生成器與迭代器

2022-05-01 12:09:11 字數 1906 閱讀 6976

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

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

# 用生成器實現xrange

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍歷一些巨大的或是無限的集合,比如幾個g的檔案

特點:

訪問者不需要關心迭代器內部的結構,僅需通過next()方法不斷去取下乙個內容

不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問

訪問到一半時不能往回退

便於迴圈比較大的資料集合,節省記憶體

#

用迭代器實現range

defrange(num):

temp = -1

while

true:

temp = temp + 1

if temp >=num:

return

else

:

yield

temp

#用for迴圈代替__next__方法

for i in range(5):

print

(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

'''

# 用迭代器實現range

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 來隨時終止生...