Gibt es eine elegante pythonsche Methode, um nachgestellte leere Elemente aus einer Liste zu entfernen. Eine Art list.rstrip (None). Also
%Vor%sollte zu
führen %Vor%Ich denke, das könnte verallgemeinert werden, um nachlaufende Elemente eines bestimmten Wertes zu entfernen.
AKTUALISIEREN : Ich hätte angeben sollen, dass dies als einfacher (lesbarer) Ausdruck ausgeführt werden soll
Bearbeitet : Verwenden Sie pop () anstatt die Liste zu schneiden, wie die Kommentatoren es richtig vorgeschlagen haben.
Ich weiß nicht, ob es einen mehr pythischen Weg gibt, aber das funktioniert:
%Vor% Bearbeiten : Wenn @DSM darauf hinweist, dass Sie nur None
-Werte loswerden und Nullen oder andere falsche Werte beibehalten möchten, können Sie Folgendes tun:
Das Folgende überprüft explizit auf None
elements:
Es kann wie folgt verallgemeinert werden:
%Vor% Sie können jetzt verschiedene Funktionen für f
definieren, um nach anderen Bedingungen zu suchen.
Wenn Sie die Lesbarkeit wirklich beeinträchtigen müssen, dann würde ich das tun.
%Vor%Hier ist noch ein One-Liner:
%Vor%Diese Dinge machen Spaß!
BEARBEITEN
Ich habe gerade festgestellt, dass das Listenverständnis völlig unnötig ist. Slicen sollte gut funktionieren:
%Vor%Was ist mit Rekursion + Slicing?
%Vor%Hinweis: Ich gehe davon aus, dass Sie hier nicht nach der recheneffizientesten Lösung suchen ...
Das Projekt more_itertools
implementiert rstrip
für jedes iterierbare Element:
more_itertools.rstrip
akzeptiert ein iterables und Prädikat. Einzelheiten finden Sie im Quellcode .