Meilleure façon de mélanger les deux listes

Est-il de meilleures façons de manière aléatoire shuffle deux listes associées, sans briser leur correspondance dans l'autre liste? J'ai trouvé les questions associées dans numpy.array et c# mais pas exactement le même.

Comme un premier essai, une simple zip truc va faire:

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

Elle sera de sortie:

[[1, 2], [7, 8], [3, 4], [5, 6], [9, 10]]
[2, 8, 4, 6, 10]

Viens de trouver un peu maladroit. Et il a aussi besoin d'une liste supplémentaire ainsi.

  • vous pouvez utiliser zip pour décompresser les listes ainsi: a,b = zip(*c)
  • Je voudrais également, en général, de ne pas recommander un programme de conception où vous avez besoin de garder un jeu de parallèles listes. Il suffit de garder 1 de la liste. Créer une sorte de classe ou de quelque chose d'unifier vos données.
  • Si l'on veut faire un tel travail par numpy, voici une bonne solution:stackoverflow.com/questions/4601373/...
InformationsquelleAutor clwen | 2012-08-01