列表清单:查找元素组合

时间:2012-10-09 18:13:48

标签: python list

说我有一个包含n个列表的列表。是否有一种简洁的方法可以获得长度为n的列表的所有可能组合,每个元素都保持其位置。

以下是一个例子:

lists=[[1],[2,3],[4,5]]

输出:

[[1,2,4],
 [1,3,4],
 [1,2,5],
 [1,3,5]]

2 个答案:

答案 0 :(得分:14)

您可以使用itertools.product

>>> import itertools
>>> lists = [[1], [2, 3], [4, 5]]
>>> list(itertools.product(*lists))
[(1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5)]

答案 1 :(得分:0)

这是我想到的第一件事:

def find_permutations(lists, context):
    if len(lists) == 1:
        for item in lists[0]:
            yield context + [item]
    else:
        for item in lists[0]:
           for permutation in find_permutations(lists[1:], context + [item]):
               yield permutation
相关问题