我如何加入python中的元组列表?

时间:2016-02-23 17:06:02

标签: python

我有一个元组列表,我希望通过在每个可能的唯一组合中加入元组来创建3个数字的元组。

离。

old_list = [(2, 3), (2, 4), (2, 5)]

new_list = [(2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)]

如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

使用itertools进行展平和排列? (和许多映射)

import itertools

old_list=[(2, 3), (2, 4), (2, 5)]
new_list=list(itertools.chain(old_list))

print map(list,map(set,list(itertools.permutations(zip(*new_list)))))[0]

答案 1 :(得分:0)

我推断,old_list元组中的第一项只能是new_list元组中的第一项,而old_list元组中的第二项只能是是new_list元组中的第二和第三项。

import itertools

old_list = [(2, 3), (2, 4), (2, 5)]
oldlist0 = [a[0] for a in old_list]
new_list = list(itertools.combinations(set(a for b in old_list for a in b),3))
new_list = [a for a in new_list if a[0] in oldlist0 and a[1] not in oldlist0 and a[2] not in oldlist0]

new_list

Out[21]:
[(2, 3, 4), (2, 3, 5), (2, 4, 5)]