在python中列出所有可能的组合

我需要能够列出包含输入列表的所有可能组合的列表。
例如列表[1,2,3]应该返回[1 [1,2] [1,3] 2 [2,3] 3 [1,2,3]]
该列表不必是特定的顺序。在这个网站上,我发现了很多使用itertools的函数,但是当我需要一个列表时,这些函数返回的对象。我是编码python的初学者,所以任何想法或想法都将不胜感激。
编辑:

更改了返回列表的算法,而不是元组。

只需使用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]]
http://stackoverflow.com/questions/8371887/making-all-possible-combinations-of-a-list-in-python

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在python中列出所有可能的组合