生成器
python中如果生成一個很大的列表,比如有100萬個元素,這樣會很浪費內存。可以通過生成器一邊循環(huán),一邊計算接下來是哪個元素,這樣就是生成器。
創(chuàng)建生成器有很多方法:
方法1:將列表生成式的[]變成圓括號()就可以啦

0
我們可以直接打印出list的每一個元素,但我們怎么打印出generator的每一個元素呢?
如果要一個一個打印出來,可以通過next()函數(shù)獲得generator的下一個返回值:

1
當然,每次都手動next()太煩了,也可以用for遍歷:

2
所以,我們創(chuàng)建了一個generator后,基本上永遠不會調用next(),而是通過for循環(huán)來迭代它,并且不需要關心StopIteration的錯誤。
方法2:含有yield
這就是定義generator的另一種方法。如果一個函數(shù)定義中包含yield關鍵字,那么這個函數(shù)就不再是一個普通函數(shù),而是一個generator