Nein, es gibt keine eingebaute Umkehrfunktion für filter()
, weil Sie den Test einfach invertieren könnten . Fügen Sie einfach not
:
Das itertools
Modul hat itertools.ifilterfalse()
, was ziemlich überflüssig ist weil das Invertieren eines booleschen Tests so einfach ist. Die itertools
Version arbeitet immer als Generator.
Sie können dies mit itertools.filterfalse
oder als Martijn schlägt vor, fügen Sie ein not
irgendwo in das Lambda, das Sie in Ihrem Filter verwenden.
Eine andere Option:
%Vor% Sie haben möglicherweise eine vorgerollte Version von compose()
verfügbar (z. B. in funktionalem oder toolz ) ).
Aus Ross Bencina 's Kommentar zu Martijn Pieters Antwort :
Ihre Argumentation ist nicht sehr überzeugend. Der erste Fall kann schon sein geschrieben
%Vor%Daher sollte das, wonach gefragt wird, mindestens so einfach sein wie
%Vor%
Ich würde vorschlagen, eine einfache negierende Wrapper-Funktion zu verwenden:
%Vor% ermöglicht das Schreiben der zweiten Zeile wie oben (mit dem zusätzlichen Unterstrich oder einer anderen Unterscheidung, da der Operator not
nicht überschrieben werden kann und wahrscheinlich auch nicht überschrieben werden sollte):
Tags und Links python functional-programming