Python’daki listemizi for döngüsünde yineleyelim. Ve belirli bir kriteri karşılıyorlarsa bu öğeleri kaldırmak istediğimizi düşünelim:
for oge in bir_liste:
if kriter(oge):
ogeyi_kaldir
Bu şekilde öğeleri nasıl kaldırabiliriz?
Yalnızca kaldırmak istemediğiniz öğeleri içeren yeni bir liste oluşturabiliriz:
yeni_liste = [x for x in bir_liste if not kriter(x)]
Ya da, listeye dilimleme atayarak varolan listeyi yalnızca istediğiniz öğeleri içerecek şekilde değiştirebiliriz: bir_liste[:]
yeni_liste[:] = [x for x in bir_liste if not kriter(x)]
Üreteçleri kullanmak yerine, itertools
modülünü de kullanabiliriz.
Python 2:
from itertools import ifilterfalse
yeni_liste[:] = filterfalse(kriter, bir_liste)
Python 3:
from itertools import filterfalse
yeni_liste[:] = filterfalse(kriter, bir_liste)