Boolean listesine dayalı bir listeyi filtreleme

| | | | | | | | | |

Bir boole listesindeki değerlere göre filtrelemem gereken bir değerler listem var:

list_a = [1, 2, 4, 6] filter = [True, False , True, False] 

Aşağıdaki satırla yeni bir filtrelenmiş liste oluşturuyorum:

filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True] 

bununla sonuçlanır:

filtrelenmiş_list yazdır [1,4] 

Çizgi işe yarıyor ama (bana) biraz abartılı görünüyor ve ben de aynı şeyi elde etmenin daha basit bir yolu olup olmadığını merak ediyordum.


Tavsiyeler

İkisinin özeti aşağıdaki cevaplarda verilen iyi tavsiyeler:

1- Yerleşik bir işlev olduğu için bir listeye benim yaptığım gibi filtre adını vermeyin.

2- Gereksiz olduğundan if filter[idx]==True.. ile yaptığım gibi True ile karşılaştırmayın. Sadece if filter kullanın [idx] yeterlidir.