Seite 1 von 1

Sortierfrage

Verfasst: Donnerstag 30. August 2007, 16:31
von Brok
hallo

Ich habe eine Übungsaufgabe für die schule zu erledigen. Es hat soweit eigentlich geklappt aber ich muss das jetzt noch sortieren.

folgendes Problem: Ich habe 2 Listen, diese will ich sortiert haben

Liste1 = [ variable_1a, variable_2a, variable_3a, variable_4a ]
Liste2 = [ variable_1b, variable_2b, variable_3b, variable_4b ]

Ich will nun Liste2 sortieren ( Liste2 sind alles Zahlen )

Liste2.sort() <-- geht das überhaupt ?
Nach dem sortieren soll Liste 2 mit der kleines Zahl beginnen und mit der größten aufhören. Wie man aber vielleicht an meinem Beispiel ( hoffentlich ) erkennen kann sollen die Listen irgendwie verknpüpft werden. Sprich wenn das 3. Element aus der 2. Liste nach dem sortieren an erster Stelle steht soll auch das 3. Element der 1. Liste an erster Stelle sein.

Kurz: Ich sortiere Liste 2 und egal was in Liste 1 steht sollen die Elemente die Position genauso wechseln wie unten. 1a und 1b gehören also zusammen, genauso wie 2a und 2b

Wie man sieht bin ich noch nicht so weit im programmieren ich hoffe mir kann deshalb jemand helfen.

Verfasst: Donnerstag 30. August 2007, 16:40
von veers

Verfasst: Donnerstag 30. August 2007, 16:52
von Brok
Das habe ich schon gelesen aber ich konnte dort nichts finden was mir helfen kann.

Verfasst: Donnerstag 30. August 2007, 17:30
von BlackJack
Da das eine Hausaufgabe ist, wird es schwierig Dir dann zu helfen, wenn man Dir nicht gleich eine komplette Lösung verraten will.

Ein bisschen Eigeninitiative wäre nicht schlecht. Ob `Liste2.sort()` überhaupt geht, kannst Du ganz einfach *ausprobieren*, da brauchst Du nicht fragen.

Bei der Problemstellung stellt sich auch die Frage warum die Daten in zwei Listen vorliegen. Üblicherweise würde man zusammengehörige Daten nicht in zwei "parallelen" Datenstrukturen speichern, sondern in einer. Zum Beispiel eine Liste mit Tupeln bei denen der für die Sortierung wichtige Teil weiter vorne steht, weil man dann einfach ganz normal sortieren kann.

Damit ist auch schon ein Lösungsweg da: Aus den beiden *eine* Liste mit Tupeln erstellen, diese Liste sortieren, und dann wieder in zwei Listen aufteilen. Von den eingebauten Funktionen könnte dazu `zip()` ganz interessant sein.

Verfasst: Donnerstag 30. August 2007, 18:54
von BlackMamba
genau, probier einfach mal List2.sort() aus und schau was dir angezeigt wird, deinen Rechner schrottest du damit nicht
Wenn du dann die Reihenfolge der Liste ändern willst, probier es mal mit List2.reverse()

Gruß BlackMamba

Verfasst: Donnerstag 30. August 2007, 19:15
von Brok
Ich habe mich wohl missverständlcih ausgedrückt

List2.sort() ob das funktioniert war nur die frage ob er mit der kleinsten zahl anfängt.

was für mich _der punkt_ ist, dass wenn list2 sortiert wird auch die liste1 sortiert wird.

Verfasst: Donnerstag 30. August 2007, 19:20
von BlackVivi
Brok hat geschrieben:Ich habe mich wohl missverständlcih ausgedrückt

List2.sort() ob das funktioniert war nur die frage ob er mit der kleinsten zahl anfängt.

was für mich _der punkt_ ist, dass wenn list2 sortiert wird auch die liste1 sortiert wird.
....Und was ist falsch verstanden wurden? Nimm den Intepreter und schreib:

Code: Alles auswählen

Liste2 = [2,4,1,9,4]
Liste2.sort()
print Liste2
Und schau mal was passiert...

Und wie BlackJack schon unschwer bemerkte, schau dir mal das Modul Zip an und les mal was über Tupel. Wir können dir einfach keinen fertigen Quellcode geben, dass würde dir einfach überhaupt nichts bringen.

Verfasst: Donnerstag 30. August 2007, 19:45
von Leonidas
BlackVivi hat geschrieben:schau dir mal das Modul Zip an
BlackJack meinte das Built-in ``zip()`` nicht das Modul ``zipfile`` welches etwas völlig anderes macht.

Verfasst: Donnerstag 30. August 2007, 21:25
von BlackJack
Ach ich denke man kann auch fertigen Quelltext geben:

Code: Alles auswählen

def main():
    a = ['a', 'b', 'c', 'd']
    b = [3, 1, 0, 2]
    a, b = map(list, zip(*sorted(zip(b, a))))
    print a
    print b
Wenn er seinem Lehrer erklären kann warum/wie das funktioniert, hat er sich auch 'ne gute Note verdient. ;-)

Verfasst: Donnerstag 30. August 2007, 21:42
von veers
BlackJack, was du machst ist schon fast gemein ;)