a = [1, 3, 5, 7, 9] print(a) print([2*i for i in a]) print(a) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:listcom01.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
第 4 行
print([2*i for i in a])
這裡串列的綜合運算為
[2*i for i in a]
意思是說, for 迴圈 (loop) 利用變數 (variable) i 依序取得串列 a 中每一個元素 (element) ,然後 for 之前為對 i 的處理,這個例子是乘以 2 。
也可以加進 if ,進行條件測試
a = [1, 3, 5, 7, 9] print(a) print([2*i for i in a if i < 9]) print(a) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:listcom02.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
上例中只對小於 9 的元素進行計算。
也可以在生成的新串列中,以序對 (tuple) 或串列為元素
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) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:listcom03.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
也可以一次兩個變數,兩個迴圈
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) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名: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/
沒有留言:
張貼留言