我們試著延續上一篇文章"夠Python,一行指令輸出大心",以一個簡單的例子,來說明List comprehension觀念 (可參考:List Comprehensions in Python)。
List comprehension其語法如下:
[ expression for item in list if conditional ]
利用串列把expression, for, list, if等元素組合起來,意即串列經由for迴圈以及if的判斷,用表示式運算成新的串列。若不包括左右中括號表示的串列,其程式語法如下:
for item in list:
if conditional:
expression
以下是搭配join()函式的小範例。
以下是搭配join()函式的小範例。
1.先撰寫列出1到9。
print(''.join([x for x in range(1, 10)]))
輸出結果:發生錯誤。
2.上例未使用字串str而產生錯誤,我們補上str函式。
print(''.join([ str(x) for x in range(1, 10)]))
輸出結果:
3.利用兩個迴圈來實現99乘法表。
print('\n'.join([''.join([ str(x*y) for x in range(1, 10)])for y in range(1, 10)]))
輸出結果:
4.將空字串''改成空白,讓輸出結果更好看。
print('\n'.join([' '.join([ str(x * y) for x in range(1, 10)])for y in range(1, 10)]))
輸出結果:
print('\n'.join([' '.join([ str(x * y)if x * y > 9 else ' '+str(x * y) for x in range(1, 10)]) for y in range(1, 10)]))
輸出結果:
感謝Python Taiwan社群成員,對本篇文章的討論,留下許多寶貴的建議。
https://www.facebook.com/groups/pythontw/permalink/10159324726148438/
https://www.facebook.com/groups/pythontw/permalink/10159324726148438/
一位熱心Python Taiwan社群成員提供九九乘法表的程式。
print('\n'.join(' '.join("%2d" % (i * j) for j in range(1, 10)) for i in range(1, 10)))
沒有留言:
張貼留言