繁体   English   中英

制作列表元素的所有可能组合-使用python

[英]Make all possible combinations of list elements - using python

我正在尝试使列表的所有可能组合。 喜欢:

l= [1,4,6,8,11,13]

combL = [ [1],[4],[6],[8],[11],[13],[1,4], ..  ]

我尝试使用

itertools.combinations(l, len(l))

但没有成功。 Python上有执行此功能的函数吗?

from itertools import combinations

def get_all_combinations(input_list):
    for i in xrange(len(input_list)):
        for item in combinations(input_list, r = i + 1):
            yield list(item)    

input_list = [1,4,6,8,11,13]
for item in get_all_combinations(input_list):
    print item

我们已经创建了一个生成器,因此效率很高,因为我们不必将整个组合存储在内存中。 这对于组合生成器很重要,因为通常组合的数量非常大。

但是,如果要获取所有组合作为列表,则可以

list(get_all_combinations(input_list))
# [[1], [4], [6], [8], [11], [13], [1, 4], [1, 6], [1, 8], [1, 11], [1, 13],..]

作为列表:

[i for j in xrange(len(l)) for i in itertools.combinations(l, j+1)]

或作为发电机:

(i for j in xrange(len(l)) for i in itertools.combinations(l, j+1))
res = []
for L in range(0, len(l)+1):
    for subset in itertools.combinations(l, L):
        res.append(list(subset))

输出:

[[], [1], [4], [6], [8], [11], [13], [1, 4], [1, 6], [1, 8], [1, 11], [1, 13], [4, 6], [4, 8], [4, 11],....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM