Sortierfrage

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
Brok
User
Beiträge: 6
Registriert: Donnerstag 30. August 2007, 16:23

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.
Brok
User
Beiträge: 6
Registriert: Donnerstag 30. August 2007, 16:23

Das habe ich schon gelesen aber ich konnte dort nichts finden was mir helfen kann.
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.
BlackMamba
User
Beiträge: 77
Registriert: Samstag 24. März 2007, 23:22
Wohnort: Germany,NRW,

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
Brok
User
Beiträge: 6
Registriert: Donnerstag 30. August 2007, 16:23

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.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
Zuletzt geändert von Leonidas am Donnerstag 30. August 2007, 21:41, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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. ;-)
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

BlackJack, was du machst ist schon fast gemein ;)
Antworten