ブール値のリストに基づいてリストをフィルタリングする

| | | | | | | | | |

ブール値のリストの値を指定してフィルタリングする必要のある値のリストがあります:

  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]  

ラインは機能しますが、(私には)少しやり過ぎに見えます。同じことを達成するためのより簡単な方法があるかどうか疑問に思いました。


アドバイス

2つの要約以下の回答にある良いアドバイス:

1-組み込み関数であるため、リストに filterという名前を付けないでください。

2- if filter [idx] == True .. で行ったように、 True と比較しないでください。不要なので、iffilterを使用するだけです。 [idx]で十分です。