我有3个清单,a
, b
and c
每个列表都包含 3 个数字的元组。
下面是一个输入示例:
a = [(1,2,4),(1,7,8),(1,5,4),(3,6,7)]
b = [(1,2,5),(1,9,3),(1,0,3),(3,6,8)]
c = [(2,6,3),(2,4,9),(2,8,5),(1,2,7)]
我正在寻找一种方法来生成一个列表,如果每个元组的两个第一项相等,则该列表采用这 3 个列表的元素,并添加第三个元素。
在我给出的数据中,只有 1 组元组的前 2 个值等于:(1,2,4)
, (1,2,5)
and (1,2,7)
.
如果我添加他们的第三个值我有4+5+7 = 16
,所以有了这些数据,我应该有[(1,2,16)]
到底。
每个列表中的前两个值都是唯一的,[(1,2,7),(1,2,15)]
不会存在。
问题不在于找到只有前两个值相等的元组,这可以通过列表理解轻松完成。但我一直在寻找一种Python式的方法来同时添加第三个值。
我可以做这个:
elem_list = []
for elem in a:
b_elem = [i for i in b if i[:-1] == elem[:-1]]
c_elem = [i for i in c if i[:-1] == elem[:-1]]
if len(b_elem) != 0 and len(c_elem) != 0:
elem_list.append((elem[0],elem[1], elem[2]+b_elem[0][2]+c_elem[0][2]))
这给了我想要的输出,但是它真的很长,这就是为什么我确信这是一种Python式的方法,可以毫无麻烦地做到这一点,我只是无法弄清楚。