Gibt es bessere Möglichkeiten, zwei verwandte Listen zufällig zu mischen, ohne ihre Korrespondenz in der anderen Liste zu unterbrechen? Ich habe verwandte Fragen in numpy.array
und c#
gefunden, aber nicht genau die gleiche.Bessere Möglichkeit, zwei verwandte Listen zu mischen
Als erster Versuch, ein einfacher zip
Trick tun:
import random
a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
b = [2, 4, 6, 8, 10]
c = zip(a, b)
random.shuffle(c)
a = [e[0] for e in c]
b = [e[1] for e in c]
print a
print b
Es wird die Ausgabe erhalten:
[[1, 2], [7, 8], [3, 4], [5, 6], [9, 10]]
[2, 8, 4, 6, 10]
Nur finde es ein wenig umständlich. Und es braucht auch eine zusätzliche Liste.
Sie 'zip' können die Listen auch entpacken:' a, b = zip (* c) ' – mgilson
ich auch ein Programm im Allgemeinen nicht empfehlen würde, Design, wo Sie eine Reihe von parallelen Listen halten müssen. Behalte einfach 1 Liste. Erstellen Sie eine Art von Klasse oder etwas, um Ihre Daten zu vereinheitlichen. – mgilson
Wenn man solche Arbeit von 'numpy' machen will, hier ist eine gute Lösung: http: //stackoverflow.com/questions/4601373/better-way-to-shuffle-two-numpy-arrays-in-unison – Mithril