Aus einer Liste Endelemente entfernen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

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()
Sirius3
User
Beiträge: 18260
Registriert: Sonntag 21. Oktober 2012, 17:20

@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()
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@Sirius3: Danke, das ist genau die richtige Lösung
Benutzeravatar
kbr
User
Beiträge: 1506
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
Antworten