[英]Why doesn't the else work in this situation
對於作業,我需要做這兩個練習:
創建一個列表,其中包括將每個數字從1乘以9(包括)乘以100,只要它除以2而沒有余數。
創建一個列表,其中包括將每個數字從1乘以9(包括)乘以100,只要它除以2而沒有余數。如果有一個余數,則將數字保留為原樣,不要乘以100。
答案1工作:
list_1 = [num * 100 for (num) in range(1,10) if num % 2 == 0]
print (list_1)
但為什么練習2的答案不起作用?:
list_1 = [num * 100 for (num) in range(1,10) if num % 2 == 0 else num]
print (list_1)
你可以做;
In [1]: [x * 100 if x % 2 == 0 else x for x in range(1, 10)]
Out[1]: [1, 200, 3, 400, 5, 600, 7, 800, 9]
寫這樣:
list_1 = [num * 100 if num % 2 == 0 else num for num in range(1,10)]
你可以這樣做:
list_1 = [(num * 100 if num % 2 == 0 else num) for (num) in range(1,10)]
x if y else z
作為每個列表元素的輸出, x if y else z
評估語句x if y else z
。 希望這可以幫助 :)
你的交替是全方位的。
[x for x in xs if some_predicate else y]
解析為
[(x for x in xs) if some_predicate else (y)] # which makes no sense
不是
[(x) for x in xs if some_predicate else (y)]
但你可以做到
[x if some_predicate else y for x in xs]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.