Python 3.1 快速導覽 - 串列型態的綜合運算

串列 (list) 型態 (type) 可以進行綜合運算 (comprehension) ,所謂的綜合運算是指串列中可以撰寫運算式 (expression) ,計算結果生成另一個串列,例如

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


內建型態




沒有留言: