我需要能够列出包含输入列表的所有可能组合的列表。
例如列表[1,2,3]应该返回[1 [1,2] [1,3] 2 [2,3] 3 [1,2,3]]
该列表不必是特定的顺序。在这个网站上,我发现了很多使用itertools的函数,但是当我需要一个列表时,这些函数返回的对象。我是编码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]]
相关文章
转载注明原文:在python中列出所有可能的组合 - 代码日志