python – 制作列表的所有可能组合

我需要能够创建一个包含输入列表的所有可能组合的列表.
例如,列表[1,2,3]应该返回[1 [1,2] [1,3] 2 [2,3] 3 [1,2,3]]
该列表不必按任何特定顺序排列.在这个网站上我发现了许多使用itertools的函数,但是当我只需要一个列表时,它们就会返回对象.

解决方法:

只需使用itertools.combinations.例如:

import itertools

lst = [1, 2, 3]
combs = []

for i in xrange(1, len(lst)+1):
    combs.append(i)
    els = [list(x) for x in itertools.combinations(lst, i)]
    combs.append(els)

现在梳子保持这个值:

[1, [[1], [2], [3]], 2, [[1, 2], [1, 3], [2, 3]], 3, [[1, 2, 3]]]

是的,它与您提供的示例输出略有不同,但在该输出中您没有列出所有可能的组合.

我在每个大小的实际列表之前列出组合的大小,如果您需要的只是组合(没有大小,因为它出现在您的示例输出中)然后尝试这些代码的其他版本:

import itertools

lst = [1, 2, 3]
combs = []

for i in xrange(1, len(lst)+1):
    els = [list(x) for x in itertools.combinations(lst, i)]
    combs.extend(els)

现在梳子保持这个值:

[[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
上一篇:php – 没有重复的所有子数组元素的组合


下一篇:java – 如何生成给定List的幂集?