Seite 1 von 1

Problem bei Rückgabe einer reversed(liste)

Verfasst: Sonntag 20. Januar 2008, 20:24
von RauberRacing
wir machen im Unterricht momentan verschiedene Sortieralgorithmen und Aufgabe ist es Selection Sort zu programmieren.

so sah mein code aus:

Code: Alles auswählen

def selectionSort(liste):
    for i in range(len(liste)):
        low = liste[i]
        for j in range(len(liste)):
            if liste[j] < low:
                low = j
        swap(liste, i, low)
allerdings erhalte ich dann eine absteigend sortierte Liste. Also meine Idee einfach das ganze reversed zurückgeben

Code: Alles auswählen

def selectionSort(liste):
    for i in range(len(liste)):
        low = liste[i]
        for j in range(len(liste)):
            if liste[j] < low:
                low = j
        swap(liste, i, low)
    return reversed(liste)
allerdings krieg ich dann folgendes zurück wenn ich das Programm laufen lasse:
<listreverseiterator object at 0x017BEB90>
die Hexzahl am Schluss variiert immer. Kann mir jemand helfen?[/quote][/code]

Verfasst: Sonntag 20. Januar 2008, 20:31
von BlackJack
Setz noch ein `list()` drumherum, damit aus dem Iterator eine Liste erstellt wird. Oder ``liste[::-1]``. Wobei das natürlich nicht so offensichtlich/verständlich ist.

Verfasst: Sonntag 20. Januar 2008, 20:33
von EyDu
Du bekommst einen Iterator (google das einfach mal) als Ergebnis zurück, mit dem du über die Elemente der Liste "laufen" kannst. Wenn du daraus eine Liste erstellen möchtest, dann benutze einfach:

Code: Alles auswählen

return list(reversed(liste))
Da du die eingegebene Liste aber so wie so veränderst, kanns du auch

Code: Alles auswählen

liste.reverse()
return liste
schreiben.