说我有一个固定大小和元素的列表。 我希望创建数组内部元素的所有可能组合的集合。我该如何实现?
在python中,我试图像这样使用itertools:
import itertools
a = [4, 7]
for L in range(0, len(a)+1):
for subset in itertools.combinations(a, L):
print(subset)
但是,这给了我一个输出(),(4),(7),(4,7)
,就像在元组中一样。我希望将4,7,47,74
作为列表或数组(C ++)中的期望输出,并且不要在每次循环迭代后打印它们。
我不知道这是排列还是组合。所以请多多包涵和帮助。
答案 0 :(得分:1)
从示例输出(顺便说一句,它与您的输入不一致)中,您显然不需要Child
,而需要combinations
中的permutations
。您可以使用itertools
合并两个数字以用于打印。
最重要的是,您应从1开始在join
上循环,因为您至少需要 个长度为1的字符串来生成排列,否则将得到您在问题中提到的空列表(元组)。
L
输出
import itertools
a = [4, 7]
lst = []
for L in range(1, len(a)+1):
for subset in itertools.permutations(a, L):
lst.append(''.join(str(x) for x in subset))
for l in lst:
print (l)