2017-04-16 2 views

Répondre

1

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.

+0

Merci. Cela a bien fonctionné. –

4

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) 
+0

Merci. Cela m'a vraiment aidé. –

+0

@ yas.f veuillez upvote ou approuver la réponse :) –

0

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]]