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.