问题:给定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.permutations
和itertools.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)]
是否有一些可用的现成产品?还是更多的“自己动手”问题?
答案 0 :(得分:1)
您将flatten()
与permutations
混淆了:
product
答案 1 :(得分:0)
答案仍然在itertools中。称为product
的函数可以解决问题;它有两个参数:第一个是具有可用元素的Iterable,第二个是Iterable可以重复自身的次数。
itertools.product([4,8,15],repeat=3)
将返回示例中所需的排列。
permutations
或combinations
对您不起作用的原因是因为它们不允许项目重复。 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")