Frage von Maxi1002, 10

Fehler beim löschen eines elementes in python3.5?

from random import randint

liste = []
neueliste = []
i = 0

anzahlelemente = 10
while anzahlelemente > 0:
    hinzu = randint(-100, 100)
    liste.append(hinzu)
    anzahlelemente = anzahlelemente - 1

print(liste)

vzahl=liste[0]

laenge = len(liste)

while i < laenge:
    for zahl in liste:
        if zahl < vzahl:
            vzahl = zahl
    neueliste.append(vzahl)
    del liste[vzahl]
    i = i+1



print(neueliste)

bekomme den Fehler heraus

del liste[vzahl]

IndexError: list assignment index out of range
Antwort
von ralphdieter, 4

vzahl ist ein Wert zwischen -100 und 100, und kein Index zwischen 0 und len(liste)-1.

Wahrscheinlich willst Du nicht del liste[vzahl], sondern liste.remove(vzahl)

Kommentar von Maxi1002 ,

bekomme ich wieder einen Fehler

liste.remove(vzahl)

ValueError: list.remove(x): x not in list
Kommentar von ralphdieter ,

Ich vermute einem logischen Fehler: Wenn die innere for-Schleife nichts Kleineres findet, hat vzahl noch den Wert aus dem vorigen Schleifendurchlauf.

Schiebe mal die Initialisierung vzahl=liste[0] in die while-Schleife, direkt vor die for-Schleife. Dann sollte es klappen.

P.S.: Es gibt auch einfachere Methoden, eine Liste zu sortieren:

neueliste = sorted(liste)

Keine passende Antwort gefunden?

Fragen Sie die Community