J'ai une liste imbriquée comme suit:permutation des éléments dans la liste de la liste
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Je dois permute que les éléments à l'intérieur de chaque liste.
Avez-vous une idée de comment puis-je faire?
J'ai une liste imbriquée comme suit:permutation des éléments dans la liste de la liste
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Je dois permute que les éléments à l'intérieur de chaque liste.
Avez-vous une idée de comment puis-je faire?
Pour mélanger chaque sous-liste dans une compréhension de la liste, vous ne pouvez pas utilisez random.shuffle
car cela fonctionne. Vous pouvez utiliser random.sample
avec la longueur de l'échantillon = la longueur de la liste:
import random
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_a = [random.sample(l,len(l)) for l in A]
print(new_a)
une sortie:
[[2, 1, 3], [5, 4, 6], [7, 9, 8]]
Cette solution est le meilleur si vous ne voulez pas modifier votre liste initiale. Sinon, en utilisant shuffle
dans une boucle comme quelqu'un d'autre a répondu fonctionne bien aussi.
Merci. Cela a bien fonctionné. –
Vous pouvez faire quelque chose comme ceci:
import random
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for x in A:
random.shuffle(x)
Merci. Cela m'a vraiment aidé. –
@ yas.f veuillez upvote ou approuver la réponse :) –
Utilisez les permutations de itertools:
from itertools import permutations
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
out = []
for i in A:
for j in permutations(i):
out.append(list(j))
print out
SORTIE:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1],
[4, 5, 6], [4, 6, 5], [5, 4, 6], [5, 6, 4], [6, 4, 5], [6, 5, 4],
[7, 8, 9], [7, 9, 8], [8, 7, 9], [8, 9, 7], [9, 7, 8], [9, 8, 7]]
Donc, vous voulez juste mélanger chaque sous-liste? – timgeb
afficher la sortie attendue – RomanPerekhrest