基于一个键属性在python中嵌套列表的组合

时间:2013-06-13 10:16:21

标签: python list nested combinations

我不知道如何形容这一点。我将展示一个例子: 这是我的输入列表

[[0,25], [1,54], [2,76], [3,13], [4,79]]

这是我想要的输出:

[[[0,25], [1,54]], [[0,25], [1,54]], [[0,25], [2,76]], ...]

即我想要一个列表,其中包含根据内部列表的第一个字段一次取2个内部列表的所有组合。

我试过像这样的itertools:

perm_list = itertools.combinations(task_list, 10)

但它所做的只是表明:

itertools.combinations object at 0x0120B060

1 个答案:

答案 0 :(得分:1)

>>> from itertools import combinations
>>> nums = [[0,25], [1,54], [2,76], [3,13], [4,79]]
>>> list(combinations(nums, r=2))
[([0, 25], [1, 54]), ([0, 25], [2, 76]), ([0, 25], [3, 13]), ([0, 25], [4, 79]), ([1, 54], [2, 76]), ([1, 54], [3, 13]), ([1, 54], [4, 79]), ([2, 76], [3, 13]), ([2, 76], [4, 79]), ([3, 13], [4, 79])]

顾名思义,itertools.combinations返回一个迭代器(懒惰地产生组合),你必须使用带有list(...)构造函数的迭代器来获取你的列表。通常,迭代器是优选的,因为您可能只需要迭代组合。

for a, b in combinations(nums, r=2):
    pass

如果您不需要存储结果,请不要构建列表。