2019-05-26派森學習第184天

生成器

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 簡介 基本概念 Generator函數(shù)是ES6提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同。Genera...
    oWSQo閱讀 582評論 0 2
  • 寫在前面的話 代碼中的# > 表示的是輸出結果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,237評論 0 9
  • 我家旁邊有個花店,簡單的大棚里總有絡繹不絕的顧客。那些漂亮的花也確實招人喜愛。沒什么事的時候,我總喜歡跑到花棚里轉...
    圓圓2408閱讀 333評論 0 3
  • 有時候,我們很想去認識在我們對面的,旁邊的那個ta,我們鼓起勇氣想找一個理由去搭訕,但是又害怕因為冒昧的打擾,略顯...
    一只有意識的貓閱讀 285評論 0 1

友情鏈接更多精彩內容