Problem bei Rückgabe einer reversed(liste)

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.
Antworten
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

Sonntag 20. Januar 2008, 20:24

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]
BlackJack

Sonntag 20. Januar 2008, 20:31

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.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Sonntag 20. Januar 2008, 20:33

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