2017-04-16 15 views
1

的列表中的元素我有一個嵌套列表如下:置換列表

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

我需要置換隻有每個列表內的元素。

你有什麼想法,我該怎麼做?

+0

所以你只是想洗牌每個子列表? – timgeb

+2

顯示預期的輸出 – RomanPerekhrest

回答

1

要隨機播放列表中的理解每個子表,你不能使用random.shuffle,因爲它工作正常。您可以使用random.sample與樣品長度=列表的長度:

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) 

輸出:

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

該解決方案是最好的,如果你不希望修改原始列表。否則,在循環中使用shuffle,因爲其他人的回答也很好。

+0

謝謝。它運作良好。 –

4

你可以做這樣的事情:從itertools

import random 
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

for x in A: 
    random.shuffle(x) 
+0

謝謝。它真的幫助了我。 –

+0

@ yas.f請upvote或批准答案:) –

0

使用排列:

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 

OUTPUT:

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