根據布爾值列表過濾列表

| |

我有一個值列表,我需要過濾給定布爾列表中的值:

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] 

這條線有效,但看起來(對我來說)有點矯枉過正,我想知道是否有更簡單的方法來實現同樣的效果。


建議

兩個總結以下答案給出了很好的建議:

1- 不要像我一樣命名列表filter,因為它是一個內置函數。

2- 不要像我對 if filter[idx]==True.. 那樣將事物與 True 進行比較,因為它是不必要的。只需使用 if filter [idx] 就夠了。