天天看點

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

大家好,我是皮皮。

一、前言

前幾天在Python最強王者交流群有個叫【Chloe】的粉絲問了一個Python生成器的問題,這裡拿出來給大家分享下,一起學習下。

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

二、解決過程

這裡【月神】給出了解答,如下圖所示:

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

當然了,這塊有點難了解的部分,如下圖所示:

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

如果加​

​return​

​的話,效果就不一樣了。

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

這裡在額外細節化一下,【瑜亮老師】給出了​

​yield​

​用法細節。

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目
# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

這個題目主要就考察yield傳回結果時,“暫停”函數,再次調用後繼續執行​

​yield​

​後面的代碼。

這裡給出一份代碼,了解起來更加容易一些:

def even_odd(x):
    for j in x:
        if j % 2 == 0:
            yield 'Even' + str(j)
        yield 'Odd' + str(j)


num = [0, 1, 2, 3, 4, 5]
for i in even_odd(num):
    print(i, end=" ")      

這個輸出的結果是:​

​Even0 Odd0 Odd1 Even2 Odd2 Odd3 Even4 Odd4 Odd5​

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

最後,總結下生成器的用法和特點,

# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目
# yyds幹貨盤點 # 盤點一道Python中的yield生成器的題目

三、總結