【发布时间】:2016-03-11 20:02:33
【问题描述】:
我有一个 Python 中 K 元素的所有排列的列表,如下所示:
import itertools
perms = list(itertools.permutations(range(K), K))
我想为这些排列perms 的所有可能组合生成一个矩阵(或列表)M。该矩阵(或列表)的每个元素的大小为N。我该怎么做?
例如,对于K=2,我会得到perms=[(0, 1), (1, 0)]。对于N=3,我想要:
M = [ [(0, 1), (0, 1), (0, 1)],
[(0, 1), (0, 1), (1, 0)],
[(0, 1), (1, 0), (0, 1)],
[(0, 1), (1, 0), (1, 0)],
[(1, 0), (0, 1), (0, 1)],
[(1, 0), (0, 1), (1, 0)],
[(1, 0), (1, 0), (0, 1)],
[(1, 0), (1, 0), (1, 0)] ]
M 是一个包含8 列表的列表。每个列表的大小为N=3,并包含来自perms 的元素。
对于N=2,我想拥有:
M = [ [(0, 1), (0, 1)],
[(0, 1), (1, 0)],
[(1, 0), (0, 1)],
[(1, 0), (1, 0)] ]
对于N=1,我想拥有:
M = [ [(0, 1), (1, 0)] ] = perms
我不知道我是否正确地表述了我的问题(我认为它可以比这更清楚地重新表述)。
【问题讨论】:
-
为什么不
[(1,0), (1,0), (0,1)]?当您指定N时,当K小于N时,您如何决定如何填充列表? -
那是我犯的错误。我将不得不接受一个答案并重新提出我认为的问题。
-
更新您的问题。
标签: python permutation