从一个列表中获取基于另一个布尔列表的元素

时间:2015-07-09 20:12:57

标签: python

我有两个相同大小的列表,一个是字符串列表,另一个是布尔值列表(TrueFalse),我想只返回一个字符串列表索引是真的。

b_list = [True, False, True]
s_list = ['abc', 'sfsfsfsf', 'def']

想要

s_list = ['abc','def'] 

2 个答案:

答案 0 :(得分:4)

使用itertools.compress

  

compress(数据,选择器):返回与选择器元素对应的数据元素

因此s_list数据b_list选择器

In [8]: import itertools

In [9]: list(itertools.compress(s_list, b_list))
Out[9]: ['abc', 'def']

答案 1 :(得分:2)

没有itertools使用列表理解:

[y for (x,y) in zip(b_list, s_list) if x]