使用Python生成所有组合

时间:2018-12-24 19:27:42

标签: python combinations permutation

说我有一个固定大小和元素的列表。 我希望创建数组内部元素的所有可能组合的集合。我该如何实现?

在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 ++)中的期望输出,并且不要在每次循环迭代后打印它们。 我不知道这是排列还是组合。所以请多多包涵和帮助。

1 个答案:

答案 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)