1. 程式人生 > >人工智慧之Python16 迭代器和生成器

人工智慧之Python16 迭代器和生成器

有一個概念我們一直在用,但我們卻從來沒有認真的去深入剖析它-這個概念就是迭代。

迭代器

迭代的意思類似於迴圈,每一次重複的過程被稱為一次迭代的過程,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。提供迭代方法的容器稱為迭代器,通常接觸的迭代器有序列、列表、元組、字串還有字典也是迭代器,都支援迭代的操作。

Python提供了兩個BIF
- iter()
- next()

對一個容器物件,呼叫他的iter()就得到他的迭代器,呼叫next()迭代器就會返回下一個值,知道迭代器沒有值了才會返回

字串的迭代器

for ss in "diedaiqi":
    print(ss)
#輸出是
d i e d a i q i

生成器

迭代器和生成器是python這兩年來引入的最強大的兩個特性。生成器其實是迭代器的一種實現。

生成器的發明使得Python模仿協同程式的概念得以實現。;所謂協同程式,就是可以執行的獨立函式呼叫,函式可以暫停或者掛起,並在需要的時候從程式離開的地方繼續或者重新開始

Python是通過生成器來實現類似於協同程式的概念:生成器可以暫時掛起函式,並保留函式的區域性變數等資料,然後在再次呼叫它的時候,從上次暫停的位置繼續執行下去。

一個例子形象說明:

def myGen():
    print("生成器正在執行")
    yield 1
    yield
2 for i in myGen(): print(i)

總結

迭代器和生成器待以後見得多了再行補充