entfernt nachgestellte leere Elemente in Python

7

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

    
Dmitry B. 05.04.2012, 19:38
quelle

11 Antworten

14

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:

%Vor%     
alan 05.04.2012 19:41
quelle
7

Das Folgende überprüft explizit auf None elements:

%Vor%

Es kann wie folgt verallgemeinert werden:

%Vor%

Sie können jetzt verschiedene Funktionen für f definieren, um nach anderen Bedingungen zu suchen.

    
Simeon Visser 05.04.2012 19:45
quelle
3
%Vor%     
Scott Hunter 05.04.2012 19:51
quelle
2

Versuchen Sie es

%Vor%     
Abhijit 05.04.2012 19:45
quelle
1

Für eine einzeilige Lösung:

%Vor%

Wenn Sie es wiederverwenden möchten, ist hier eine Definition in Point-free-Stil:

%Vor%     
Marcin 05.04.2012 19:51
quelle
1

Wenn Sie die Lesbarkeit wirklich beeinträchtigen müssen, dann würde ich das tun.

%Vor%     
luke14free 05.04.2012 20:06
quelle
1

Ich habe nie eine Antwort akzeptiert, weil ich mit den angebotenen Lösungen nicht wirklich zufrieden war. Hier ist eine andere Lösung (1 Zeile und keine Bibliotheksabhängigkeiten), mit der ich auch nicht ganz zufrieden bin:

%Vor%     
Dmitry B. 05.04.2016 20:35
quelle
0

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%     
Joel Cornett 05.04.2012 20:04
quelle
0

Was ist mit Rekursion + Slicing?

%Vor%

Hinweis: Ich gehe davon aus, dass Sie hier nicht nach der recheneffizientesten Lösung suchen ...

    
marchelbling 05.04.2012 21:30
quelle
0

Was ist mit:

%Vor%     
calandoa 05.02.2015 12:38
quelle
0

Das Projekt more_itertools implementiert rstrip für jedes iterierbare Element:

%Vor%

more_itertools.rstrip akzeptiert ein iterables und Prädikat. Einzelheiten finden Sie im Quellcode .

    
pylang 15.06.2017 08:12
quelle

Tags und Links