2017-04-27 50 views
3

我的名單:列表條件得到真或假在新的列表

>>> labels = ['setosa', 'setosa', 'versicolor', 'versicolor', 'virginica'] 

我想在'setosa'索引創建一個新的列表,與True相同數量的元素,和其他地方False

我已經試過這樣

>>> b = 'setosa' in labels 
>>> b 
True 

我想用5個元素的列表:

[True, True, False, False, False] 

回答

9

只需用一個列表理解:

lst = [label == "setosa" for label in labels] 
+0

,因爲它是短,大家誰看到它,給出了一個投票 –

0

,你可以使用.append()功能:

new_list = [] 

for element in labels: new_list.append('setosa' == element) 
+0

對不起@PeterWood – Veltro

2

你可以使用map,這在Python 2返回一個list

>>> labels = ['setosa', 'setosa', 'versicolor', 'versicolor', 'virginica'] 
>>> map('setosa'.__eq__, labels) 
[True, True, False, False, False] 

在Python 3,如果你需要列表:

>>> list(map('setosa'.__eq__, labels)) 
[True, True, False, False, False]