寫程式時常常會遇到許多的 for 跟 if,如下面的範例
numbers = [1,2,3,4,5,6]
squares = []
for n in numbers:
if n % 2 == 0:
squares.append(n*n)
上述程式碼將 numbers 中是偶數的元素平方之後加到 squares。利用
list comprehensions
只要一行程式碼就可以完成目的。
squares = [n*n for n in numbers if n % 2 == 0]
請注意程式的可讀性是不是並沒有因為程式碼的縮短而減少呢?
其實 list comprehensions 中可以有很多個 for 跟 很多個 if,
不過使用時要斟酌一下,如果真的有很多個 for 跟 if,
最好考慮使用一般的寫法,不然程式就會變得不易閱讀。
下面的例子使用了2個 for
nums = [1,2,3]
fruit = ["Apples", "Peaches", "Bananas"]
print [(i,f) for i in nums for f in fruit]
上面的程式會印出
[(1, 'Apples'), (1, 'Peaches'), (1, 'Bananas'),
(2, 'Apples'), (2, 'Peaches'), (2, 'Bananas'),
(3, 'Apples'), (3, 'Peaches'), (3, 'Bananas')]
下面的例子使用了2個 for 跟2個 if
nums = [1,2,3]
fruit = ["Apples", "Peaches", "Bananas"]
print [(i,f) for i in nums for f in fruit
if i % 2 == 1 if f[0] == 'P']
上面的程式會印出
[(1, 'Peaches'), (3, 'Peaches')]
No comments:
Post a Comment