我有一个值列表,我需要根据布尔值列表中的值对其进行过滤:
list_a = [1, 2, 4, 6]
filter = [True, False, True, False]
我使用以下代码行生成一个新的过滤列表:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
结果是:
print filtered_list
[1,4]
这句话很有效,但(对我来说)有点过分,我想知道是否有一种更简单的方法来实现同样的效果。
以下答复中提出的两条良好建议摘要:
不要像我一样命名一个列表 filter
,因为它是一个内置函数。
不要把东西和 True
比较,就像我用 if filter[idx]==True..
做的那样,因为它是不必要的。只用 if filter[idx]
就够了。