我有一個值列表,我需要過濾給定布爾列表中的值:
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]
就夠了。