2015-03-02 63 views
0

想要生成一個使用if語句檢查數字是偶數還是奇數的Python列表。如果甚至將List值設置爲「1」,並且如果奇數則將列表值設置爲「0」。使用True/False表達式檢查創建Python列表?

進展到日期:

的List1 = [X爲在範圍(0,99)x,如果x%2 == 0]

但是,這僅產生偶數的列表。當我改變表達式來添加一個else檢查時,我得到一個語法錯誤。任何幫助讚賞。

的List1 = [1爲如果範圍(0,99)X X%2 == 0否則爲0]

回答

3

您使用的過濾器,在那裏你要改變的左手側的表達代替,使用條件表達式

[1 if x % 2 == 0 else 0 for x in range(99)] 

這可以簡化爲:

[1 - (x % 2) for x in range(99)] 
+0

謝謝!花了一些時間來解決這個問題,你已經向我展示了語法的真實性。就表情和過濾的左右手而言,網絡上有沒有什麼好的內容可以爲初學者解釋這一點?迄今在列表中遇到的基本表達式似乎都沒有處理這個問題?我確實嘗試先創建一個函數,然後調用列表中的函數來生成。掙扎這個太: – MarkGuk 2015-03-02 11:40:22

+0

'DEF ODD_EVEN列(): 在範圍X(0,99): \t如果x%2 == 0: \t \t X = 1 \t否則: \t \t x = 0的 List1 = [odd_even()] print(List1)' – MarkGuk 2015-03-02 12:55:21

+0

@MarkGuk:這在評論中並不真正起作用,但看起來您並沒有從函數中返回任何東西。你仍然必須在函數本身中構建一個列表*,或者閱讀一下生成器函數(在這個階段可能有點過於先進)。 – 2015-03-02 12:58:25

2

變化否則本if條件如下面的list_comprehension內部。

>>> [1 if x % 2 == 0 else 0 for x in range(0,99)] 
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1] 

這將爲偶數打印1,奇數打印爲0。