1 2 3 4 5 6 7 8 9 10 11 12 | a = [ 1 , 3 , 5 , 7 , 9 ] print (a) print ([ 2 * i for i in a]) print (a) # 《程式語言教學誌》的範例程式 # 檔名:listcom01.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

第 4 行
4 | print ([ 2 * i for i in a]) |
這裡串列的綜合運算為
[ 2 * i for i in a] |
意思是說, for 迴圈 (loop) 利用變數 (variable) i 依序取得串列 a 中每一個元素 (element) ,然後 for 之前為對 i 的處理,這個例子是乘以 2 。
也可以加進 if ,進行條件測試
1 2 3 4 5 6 7 8 9 10 11 12 | a = [ 1 , 3 , 5 , 7 , 9 ] print (a) print ([ 2 * i for i in a if i < 9 ]) print (a) # 《程式語言教學誌》的範例程式 # 檔名:listcom02.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

上例中只對小於 9 的元素進行計算。
也可以在生成的新串列中,以序對 (tuple) 或串列為元素
1 2 3 4 5 6 7 8 9 10 11 12 13 | a = [ 1 , 3 , 5 , 7 , 9 ] print (a) print ([[i, 2 * i] for i in a]) print ([(i, 2 * i) for i in a]) print (a) # 《程式語言教學誌》的範例程式 # 檔名:listcom03.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

也可以一次兩個變數,兩個迴圈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | a = [ 1 , 3 , 5 , 7 , 9 ] b = [ 2 , 4 , 6 , 8 , 10 ] print (a) print (b) print ([(i, j, i * j) for i in a for j in b]) print (a) print (b) # 《程式語言教學誌》的範例程式 # 檔名:listcom04.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

中英文術語對照 | |
---|---|
串列 | list |
型態 | type |
綜合運算 | comprehension |
運算式 | expression |
迴圈 | loop |
變數 | variable |
元素 | element |
序對 | tuple |
參考資料
http://docs.python.org/py3k/tutorial/datastructures.html
http://www.python.org/dev/peps/pep-0202/
http://docs.python.org/py3k/tutorial/datastructures.html
http://www.python.org/dev/peps/pep-0202/
沒有留言:
張貼留言