¿Hay mejores formas de mezclar aleatoriamente dos listas relacionadas sin romper su correspondencia en la otra lista? He encontrado preguntas relacionadas en numpy.array
y c#
, pero no exactamente la misma.Mejor forma de mezclar dos listas relacionadas
Como primer intento, un simple truco zip
hará:
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
Se obtendrá la salida:
[[1, 2], [7, 8], [3, 4], [5, 6], [9, 10]]
[2, 8, 4, 6, 10]
Sólo tiene que encontrar un poco incómodo. Y también necesita una lista adicional también.
puede usar 'zip' para descomprimir las listas, así:' a, b = zip (* c) ' – mgilson
que sería también, en general, no recomendar un programa diseño donde necesita mantener un conjunto de listas paralelas. Solo mantén 1 lista. Crea algún tipo de clase o algo para unificar tus datos. – mgilson
Si uno quiere hacer tal trabajo por 'numpy', aquí hay una buena solución: http: //stackoverflow.com/questions/4601373/better-way-to-shuffle-two-numpy-arrays-in-unison – Mithril