1. 程式人生 > >少說話多寫程式碼之Python學習052——類的成員(實現生成器)

少說話多寫程式碼之Python學習052——類的成員(實現生成器)

前面我們知道類中定義__iter__可以實現迭代器,我們再看看另一個概念,叫生成器。生成器和迭代器是Python中近幾年引入的顯著地兩個特性。
生成器是用普通的函式語法定義的迭代器。
又這樣一個數組:sequen=[[1,2],[3,4],[5]]。我們要按順序打印出來,

def flatten(seq):
    for list in seq:
        for item in list:
            yield  item

程式碼中,yield是一個新的語句,函式中包含了yield語句,則該函式稱之為生成器。使用yield每次產生一個值,函式就被凍結,函式停在這個點直到被重新喚醒後從該點繼續執行。
看看呼叫

sequen=[[1,2],[3,4],[5]]
for item in flatten(sequen):
    print(item)

輸出

1
2
3
4
5

也可以這樣使用

print(list(flatten(sequen)))

輸出

[1, 2, 3, 4, 5]

工程檔案下載:https://download.csdn.net/download/yysyangyangyangshan/10821883