簡體   English   中英

為什么其他人不能在這種情況下工作

[英]Why doesn't the else work in this situation

對於作業,我需要做這兩個練習:

  1. 創建一個列表,其中包括將每個數字從1乘以9(包括)乘以100,只要它除以2而沒有余數。

  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM