Ich habe zwei Listen: eine enthält eine Reihe von x Punkten, die andere enthält y Punkte. Python schafft es irgendwie, die x Punkte zu vermischen, oder der Benutzer könnte. Ich müsste sie nach dem niedrigsten bis zum höchsten sortieren und die y-Punkte verschieben, um ihren x-Korrespondenten zu folgen. Sie sind in zwei separaten Listen. Wie mache ich das?Python: Sortieren Sie eine Liste und ändern Sie eine andere
Antwort
Sie könnten die Listen zippen und das Ergebnis sortieren. Das Sortieren von Tupeln sollte standardmäßig nach dem ersten Element sortiert werden.
>>> xs = [3,2,1]
>>> ys = [1,2,3]
>>> points = zip(xs,ys)
>>> points
[(3, 1), (2, 2), (1, 3)]
>>> sorted(points)
[(1, 3), (2, 2), (3, 1)]
Und dann, sie wieder zu entpacken:
>>> sorted_points = sorted(points)
>>> new_xs = [point[0] for point in sorted_points]
>>> new_ys = [point[1] for point in sorted_points]
>>> new_xs
[1, 2, 3]
>>> new_ys
[3, 2, 1]
Wenn die x und die y eine einzige Einheit (wie zum Beispiel ein Punkt) sein sollen, wäre es sinnvoll, sie zu speichern, wie Tupel statt zwei separate Listen.
, ist Unabhängig hier, was Sie tun sollten:
x = [4, 2, 5, 4, 5,…]
y = [4, 5, 2, 3, 1,…]
zipped_list = zip(x,y)
sorted_list = sorted(zipped_list)
Ich würde das tun, aber Matplotlib verwendet solche Listen –
>>> xs = [5, 2, 1, 4, 6, 3]
>>> ys = [1, 2, 3, 4, 5, 6]
>>> xs, ys = zip(*sorted(zip(xs, ys)))
>>> xs
(1, 2, 3, 4, 5, 6)
>>> ys
(3, 2, 6, 4, 1, 5)
Sie möchten wahrscheinlich nicht 'zip (* sortiert (...))' verwenden, wenn Sie eine große Anzahl von Elementen haben. Das Argument entpacken '*' kann nicht so effizient wie 'zip (xs, ys)' arbeiten, da es so viele Argumente wie Tupel in der Liste übergeben muss. –
>>> import numpy
>>> sorted_index = numpy.argsort(xs)
>>> xs = [xs[i] for i in sorted_index]
>>> ys = [ys[i] for i in sorted_index]
, wenn Sie mit numpy.array
>>> xs = numpy.array([3,2,1])
>>> xs = numpy.array([1,2,3])
>>> sorted_index = numpy.argsort(xs)
>>> xs = xs[sorted_index]
>>> ys = ys[sorted_index]
können die letzten 2 Zeilen sicher kombiniert werden als 'xs, ys = [v [sorted_index] für v in [xs, ys]]'? –
- 1. Eine Liste in eine andere Liste sortieren
- 2. Sortieren Sie eine Liste von Tupeln alphabetisch und nach Wert
- 3. Wie sortieren Sie eine Liste in Jinja2?
- 4. sortieren eine Liste in aufsteigender Reihenfolge Python
- 5. Ändern Sie localhost in eine andere Domäne
- 6. Python - sortieren eine Liste von verschachtelten Listen
- 7. Python, eine Liste an eine andere Liste anhängen
- 8. Ersetzen Sie eine Array-Liste durch andere Liste
- 9. Wie kann ich durch eine andere Liste von IDs eine Liste in java sortieren
- 10. Zeigen Sie eine Stilklasse auf eine andere?
- 11. Packen Sie eine Liste in Python aus?
- 12. sortieren Sie eine Liste von Zeichen mit Lambdas in Java
- 13. D Vorlagen: Sortieren Sie eine Liste von Typen
- 14. Sortieren Sie eine Liste der Karten nach Wert in Java
- 15. Sortieren Sie eine Liste alphabetisch mit Zeichen am Ende
- 16. Python: Finden Sie am nächsten Zeichenfolge (aus einer Liste) in eine andere Zeichenfolge
- 17. Sortieren einer Datei wie eine andere Datei
- 18. Lesen Sie eine Python-Liste und entfernen Sie bestimmte Zahlen aus der angegebenen Liste
- 19. VBA - Ändern Sie die Zielspalte in eine andere Spalte
- 20. Beenden Sie eine Animation und starten Sie dann die andere
- 21. Kopieren Sie alle überprüften Listeneintrag in eine andere Liste
- 22. Python: Eine Liste von Strings nach String-Vorlage sortieren?
- 23. Prolog - Fügen Sie einige Elemente einer Liste auf eine andere
- 24. alphanumerisch eine verschachtelte Liste von gemischten Datentypen in Python sortieren
- 25. Python - Wie eine Liste von Strings
- 26. Eine Liste sortieren und ein bestimmtes Element am Ende der Liste nach dem Sortieren behalten
- 27. Sortieren Sie eine Liste von Wörterbüchern, während Duplikate in Python konsolidiert werden?
- 28. Erhalten Sie eine Zeichenfolge, um eine andere in C#
- 29. Schalten Sie eine Taste und erhalten Sie eine andere an der Unterseite
- 30. So sortieren Sie eine Auswahloption nach Benutzereingabe
Sie danken arbeiten können! das ist großartig! –
Oder halten Sie die Punkte richtig verbunden, indem Sie nicht zwei separate Listen haben, sondern die Liste der Tupel behalten. –
Lesen Sie Mike Grahams Antwort. Sie können auch 'zip' verwenden, um die Tupel zu entpacken. –