「每天3分鐘學Python」Python 列表生成式的進化:生成器

01

列表生成式的缺點

通過列表生成式,我們可以直接創建一個列表。但是,內存數量有限,列表容量肯定不能超過內存大小。

再有,創建一個包含100萬個元素的列表,不僅佔用很大的存儲空間,如果我們僅僅需要訪問前面10%的元素,那後面絕大多數元素佔用的空間都白白浪費了。

02

解決辦法

如果列表元素中的元素可以按照某種算法推算出來,那是否可以在循環過程中,推算出我們需要的一定數量的元素呢?

這樣地話,我們就可以靈活地創建需要數量的list,從而節省大量的空間。

在Python中,這種一邊循環一邊計算的機制,稱為生成器:generator

03

創建generator

下面介紹兩種創建generator的方法

第一種方法很簡單,只要把一個列表生成式的 [] 改成 (),就創建了一個generator

g = ( x * x for x in range(10) )

g is a generator object

第二種方法是函數中帶有yield,那麼此函數就不再是函數了,而是一個generator,

def generatorfun():

print('step 1')

yield(10)

print('step 2')

yield 30

python的功能的確很強大,這使得它成為人工智能,AI ,機器學習,深度學習的主要用語言。


分享到:


相關文章: