生成器函式應用

2021-09-01 20:58:38 字數 1252 閱讀 4597

在for迴圈中碰到yield會暫停本次迴圈,直到執行下一次__next__()才繼續往下執行**。

def test():

for i in range(5):

print('第%s次執行' % i)

yield i

print('開始新的迴圈')

g = test()

g.__next__()

# 第0次執行

g.__next__()

# 開始新的迴圈

# 第1次執行

g.__next__()

# 開始新的迴圈

# 第2次執行

g.__next__()

# 開始新的迴圈

# 第3次執行

next(g)

# 開始新的迴圈

# 第4次執行

g.__next__()

# 開始新的迴圈

實現嘀嗒函式
def tick():

while 1:

yield '嘀'

yield '嗒'

g = tick()

print(g.__next__())

# 嘀print(g.__next__())

# 嗒print(g.__next__())

# 嘀print(g.__next__())

# 嗒

統計班級人數佔年紀人數百分比

eval可以將字串轉換成對應的資料型別

使用with開啟檔案不需要手動執行close

data.text:

get.py

def get_total():

with open('data', 'r', encoding='utf-8') as f:

for i in f:

yield eval(i)['students']

g = get_total()

c1 = g.__next__()

c2 = g.__next__()

c3 = g.__next__()

c4 = g.__next__()

total = c1 + c2 + c3 +c4

print(c1 / total, c2 / total, c3 / total, c4 / total)

# 0.24 0.28 0.224 0.256

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...

生成器函式

pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...

生成器函式

什麼是生成器 生成器是能夠動態提供資料的物件,生成器物件也是可迭代物件 例項 生成器有兩種 生成器函式 生成器表示式 生成器函式的呼叫將返回乙個生成器的物件,生成器物件是乙個可迭代物件 defmyyield 此函式為生成器函式 yield 2yield 3yield 5yield 7 此時生成乙個生...