人工智慧之Python16 迭代器和生成器
阿新 • • 發佈:2019-02-09
有一個概念我們一直在用,但我們卻從來沒有認真的去深入剖析它-這個概念就是迭代。
迭代器
迭代的意思類似於迴圈,每一次重複的過程被稱為一次迭代的過程,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。提供迭代方法的容器稱為迭代器,通常接觸的迭代器有序列、列表、元組、字串還有字典也是迭代器,都支援迭代的操作。
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)
總結
迭代器和生成器待以後見得多了再行補充