如何在python中生成列表列表的排列

时间:2015-06-25 15:21:32

标签: python list

我有一份清单说明

gather_facts: no

如何为给定长度生成列表组合?

例如,如果给定长度为3

然后我需要来自给定列表列表的3个列表元素场景的所有组合。

示例:

[[2, 4, 6], [2, 6, 10], [2, 12, 22], [4, 6, 8], [4, 8, 12], [6, 8, 10], [8, 10, 12], [8, 15, 22], [10, 11, 12]]

[2, 4, 6], [2, 6, 10], [2, 12, 22]

如果给定长度为2,那么它应该像

[2, 4, 6], [8, 10, 12], [10, 11, 12]
...
... and so forth

[2, 4, 6], [2, 6, 10]

我不希望列表中的元素排列,但我想要列表本身的排列。

1 个答案:

答案 0 :(得分:1)

这里有两种选择。第一种是使用itertools.permutations。这将为您提供每个排列(即:[1,2][2,1] 不会相同)

import itertools

lists = [[2, 4, 6], [2, 6, 10], [2, 12, 22], [4, 6, 8], [4, 8, 12], [6, 8, 10], [8, 10, 12], [8, 15, 22], [10, 11, 12]]
n = 3

for perm in itertools.permutations(lists, n):
    print(perm)

如果您想要完全唯一的分组,没有重复,请使用itertools.combinations(即:[1,2][2,1] 相同)。

for comb in itertools.combinations(lists, n):
    print(comb)