如何从Python列表中生成所有可能的数字排列?

时间:2018-09-06 00:26:31

标签: python permutation

问题:给定3个数字的列表,[4, 8, 15]生成所有可能的数字排列列表。

根据我的收集,这是3*3*3 = 27个唯一条目。像这样:

4,4,4
4,4,8
4,4,15
4,8,4
4,8,8
4,8,15
4,15,4
4,15,8
4,15,15
...

我尝试使用itertools.permutationsitertools.combinations,但无法获得全部27个值。

例如,

list(itertools.permutations([4,8,15],3))仅打印6个值:

[(4, 8, 15), (4, 15, 8), (8, 4, 15), (8, 15, 4), (15, 4, 8), (15, 8, 4)]

是否有一些可用的现成产品?还是更多的“自己动手”问题?

3 个答案:

答案 0 :(得分:1)

您将flatten()permutations混淆了:

product

答案 1 :(得分:0)

答案仍然在itertools中。称为product的函数可以解决问题;它有两个参数:第一个是具有可用元素的Iterable,第二个是Iterable可以重复自身的次数。

itertools.product([4,8,15],repeat=3)将返回示例中所需的排列。

permutationscombinations对您不起作用的原因是因为它们不允许项目重复。 product计算笛卡尔乘积,该乘积允许重复项。

答案 2 :(得分:0)

此代码显示您的要求:)

list = [4,8,15]

for i in range(len(list)):
    for j in range (len(list)):
        for k in range (len(list)):
            print ("("+str(list[i]) +","+str(list[j])+","+str(list[k])+")\n")