Seite 2 von 2
Re: Aus einer Liste Endelemente entfernen
Verfasst: Sonntag 21. Mai 2017, 10:31
von Alfons Mittelmeyer
snafu hat geschrieben:@kbr:
Das löst aber leider das Problem nicht. Schau dir mal genauer an, was in Zeile 3 bei dir passiert.
Das Problem löst es schon nur muß es
== und nicht
!= heißen in Zeile 3
Die andere Variante ohne try und except wäre:
Code: Alles auswählen
def remove_trailing(sequence, value):
for item in reversed(sequence):
if item != value:
break
sequence.pop()
Re: Aus einer Liste Endelemente entfernen
Verfasst: Sonntag 21. Mai 2017, 10:35
von Sirius3
@Alfons Mittelmeyer: das enumerate ist doch völlig überflüssig, weil i nicht verwendet wird. Das Verhalten von reversed ist undefiniert, wenn sich die Liste über die Iteriert wird, sich ändert.
Also korrekt:
Code: Alles auswählen
def remove_trailing(sequence, value):
while sequence and sequence[-1] == value:
sequence.pop()
Re: Aus einer Liste Endelemente entfernen
Verfasst: Sonntag 21. Mai 2017, 10:42
von Alfons Mittelmeyer
@Sirius3: Danke, das ist genau die richtige Lösung
Re: Aus einer Liste Endelemente entfernen
Verfasst: Sonntag 21. Mai 2017, 10:58
von kbr
snafu hat geschrieben:@kbr:
Das löst aber leider das Problem nicht. Schau dir mal genauer an, was in Zeile 3 bei dir passiert.
Oops, typischer copy & paste Typo. Sirius3s Variante ist dann durch Umgehung des try/except noch eleganter. Wobei ich sequence als Ergebnis zusätzlich noch zurückgeben würde.