2013-10-22 99 views
0

什麼是列表解析來實現這一名單:列表解析創建列表

a=[1,2,3,4,5] 
b=[[x,False] for x in a] 

會給,

[[1,False],[2,False],[3,False],[4,False],[5,False]] 

我怎樣才能獲得真正的列表中的一些數字?我需要的是這樣的:

[[1,False],[2,False],[3,False],[4,True],[5,False]] 

我隨機播放還沒有解決的問題。

回答

5

使用if-else條件:

>>> a = [1,2,3,4,5] 
>>> b = [[x, True if x == 4 else False] for x in a] 
>>> b 
[[1, False], [2, False], [3, False], [4, True], [5, False]] 

或者只是:

>>> b = [[x, x == 4] for x in a] 
+3

爲什麼不只是'[[x,x!= 4] for x in a]'? – val

+0

@ValentinCLEMENT是剛剛編輯。 :) –

+0

@ValentinCLEMENT,即'=='不''='。 –

1

使用ternary operator根據具體的情況來選擇不同的值:

conditional_expression ::= or_test ["if" or_test "else" expression] 

例子:

>>> [[x,False if x%4 else True] for x in a] 
[[1, False], [2, False], [3, False], [4, True], [5, False]] 
+0

你的榜樣會更好「[[X,X%4 == 0]×10 9]」 –

+0

@UdoKlein IMO的問題更多的是如何在該列表中添加的理解情況。所以,我試圖展示這一點。 –

+0

當然。但是,您還可以通過三元運算符將布爾值TRUE設置爲TRUE,將FALSE設置爲FALSE。恕我直言,這是不好的做法。 –

2
>>> a = [1, 2, 3, 4, 5] 
>>> b = [[x, x==4] for x in a] 
>>> b 
[[1, False], [2, False], [3, False], [4, True], [5, False]] 
>>> 

這利用了以下事實:x==4將返回True如果x等於4;否則,將返回False

2

也許這樣?

b=[[x, x==4] for x in a]