Python 列表中元素的排列

Python 列表中元素的排列,python,list,nested,permutation,Python,List,Nested,Permutation,我有一个嵌套列表,如下所示: A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 我只需要排列每个列表中的元素 你知道我该怎么做吗?你可以这样做: import random A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for x in A: random.shuffle(x) 您可以这样做: import random A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for x in A:

我有一个嵌套列表,如下所示:

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我只需要排列每个列表中的元素


你知道我该怎么做吗?

你可以这样做:

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

for x in A:
    random.shuffle(x)

您可以这样做:

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

for x in A:
    random.shuffle(x)

使用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
输出:

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

使用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
输出:

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

要洗牌列表中的每个子列表,不能使用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也可以。要在列表理解中洗牌每个子列表,您不能使用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也可以。

那么您只想对每个子列表进行shuffle?显示预期输出那么您只想对每个子列表进行shuffle?显示预期输出。这真的帮了我的忙,谢谢。它真的帮助了我。