Python 列表表達式與生成器表達式


列表表達式:

(1) 語法1:[表達式 for 變量 in 列表],表示把得到的每一個變量值都放到 for 前面的表達式中計算 ,然后生成一個列表
(2) 語法2:[表達式 for 變量 in 列表 if 條件],如果加上 if 判斷,則表示把每一個變量值進行判斷,如果判斷正確再交給表達式進行計算,然后生成一個列

In [4]: [i*2 for i in range(10)]
Out[4]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

In [5]: [i*2 for i in range(10) if i == 4]
Out[5]: [8]

 

生成器表達式:

(1) 生成器是一個特定的函數,允許返回一個中間值,然后掛起代碼的執行,稍后再恢復執行
(2) 列表表達式的結果會以列表的形式一次性返回所有的數據,如果數據量很大,就會很占內存,所以不適用於迭代大量的數據
(3) 生成器表達式的結果則會返回一個生成器對象,只有當我們去調用這個對象的時候才會讀取里面的值,因此生成器表達式是一個對內存使用友好的結構
(4) 生成器表達式的語法跟列表表達式的語法是一樣的,只是把中括號換成圓括號,如:(表達式 for 變量 in 列表 if 條件)

In [7]: (i*2 for i in range(10))    # 可以看到返回的是一個生成器對象
Out[7]: <generator object <genexpr> at 0x7fc951b52050>

In [8]: for i in (i*2 for i in range(10)):    # 只有被調用的時候才會讀取里面的值
   ...:     print(i),
   ...:     
0 2 4 6 8 10 12 14 16 18

 

 

 

 

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM