【问题标题】:Make all possible combinations of list elements - using python制作列表元素的所有可能组合 - 使用 python
【发布时间】:2014-03-18 09:28:15
【问题描述】:

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

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

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

我尝试使用

itertools.combinations(l, len(l))

但它没有成功。 Python上有什么功能可以做到这一点?

【问题讨论】:

标签: python


【解决方案1】:
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],..]

【讨论】:

  • 非常感谢!非常有帮助:)
【解决方案2】:

作为一个列表:

[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))

【讨论】:

    【解决方案3】:
    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],....
    

    【讨论】:

      猜你喜欢
      • 2023-02-14
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多