00404 使用生成器建立新的迭代模式

2021-07-26 09:31:01 字數 862 閱讀 7086

你想實現乙個自定義迭代模式,跟普通的內建函式比如 range() , reversed() 不一樣。

生成器函式

#!/usr/bin/env python

deffrange

(stop, start = 0, increment = 1):

x = start

while x < stop:

yield x

x += increment

for n in frange(10, 1.0, 0.5):

print(n)

"""

乙個函式如果存在yield語句,那麼則其就是乙個生成器。

生成器只能用於迭代操作。(不同於其他普通的函式)

"""def

countdown

(n):

print("starting to count from", n)

while n > 0:

yield n

n -= 1

print ("done!")

c = countdown(3)

print (c)

print(next(c))

print(next(c))

print(next(c))

print(next(c)) #列印done!並出錯

乙個生成器函式主要特徵,它會回應在迭代器中使用next操作。

一旦生成器函式返回退出,迭代終止。

目錄/檔案:fourth_selection/learn_iter_gender.py

使用生成器建立新的迭代器

實現乙個自定義的迭代模式,使其區別於常見的內建函式 range,reversed等 實現生成器 def frange start,stop,increment x start while x stop yield x x increment 迭代呼叫 for n in frange 1,10,0.5...

使用生成器建立新的迭代模式

你想實現乙個自定義迭代模式,跟普通的內建函式比如 range reversed 不一樣。如果你想實現一種新的迭代模式,使用乙個生成器函式來定義它。下面是乙個生產 某個範圍內浮點數的生成器 def frange start,stop,increment x start while x stop yie...

python yield建立生成器

利用迭代器,我們可以在每次迭代獲取資料 通過next 方法 時按照特定的規律進行生成。但是我們在實現乙個迭代器時,關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下乙個資料。為了達到記錄當前狀態,並配合next 函式進行迭代使用,我們可以採用更簡便的語法,即生成器 generator ...