我有一个包含多个值的列表,如下所示:
list_A = [('Text1',2,3),('Text2',2,45),('Text3',2,23),('Text4',2,0)]
我们说它包含4个项目,每个项目有3个变量。我有另一个列表,其中包含相同数量的项目,但每个列表都有一个变量,如下所示:
list_B = [7,3,3,9]
我一直试图合并它们,到目前为止我唯一可以得到的是:
zip(list_A, list_B)
>>[(('Text1',2,3),7), (('Text2',2,45),3), (('Text3',2,0),3), (('Text4',2,3),9)]
tuple(zip(list_A, list_B)
>>((('Text1',2,3),7), (('Text2',2,45),3), (('Text3',2,0),3), (('Text4',2,3),9))
最终结果应采用以下格式:
new_list = [('Text1',2,3,7),('Text2',2,45,7),('Text3',2,23,7),('Text4',2,0,9)]
答案 0 :(得分:2)
可以添加元组以形成新元组,因此您应该使用list_B中的元素形成元组:
>>> list_A = [('Text1',2,3),('Text2',2,45),('Text3',2,23),('Text4',2,0)]
>>> list_B = [7,3,3,9]
>>> [t+(e,) for t,e in zip(list_A, list_B)]
[('Text1', 2, 3, 7), ('Text2', 2, 45, 3), ('Text3', 2, 23, 3), ('Text4', 2, 0, 9)]
或者,仅在Python 3.5+中,您可以这样做:
>>> [(*t, e) for t, e in zip(list_A, list_B)]
[('Text1', 2, 3, 7), ('Text2', 2, 45, 3), ('Text3', 2, 23, 3), ('Text4', 2, 0, 9)]
答案 1 :(得分:1)
您可以使用zip
和列表理解:
list_A = [('Text1',2,3),('Text2',2,45),('Text3',2,23),('Text4',2,0)]
list_B = [7,3,3,9]
print [x + (y,) for x, y in zip(list_A, list_B)]
注意: x + y
失败,因为tuple
和int
无法连接
答案 2 :(得分:0)
Python元组有一个特点:它们是不可变的,但它们的值可能会改变。当元组持有对任何可变对象(例如列表)的引用时,可能会发生这种情况。
元组是不可变的我们不能再修改它:所以我们重新创建如下:
list_A = [('Text1',2,3),('Text2',2,45),('Text3',2,23),('Text4',2,0)]
list_B = [7,3,3,9]
new_list = [(i[0]+(i[1],)) for i in zip(list_A, list_B)]
or
new_list = [tuple(list(i[0])+[i[1]]) for i in zip(list_A, list_B)]
new_list
[('Text1', 2, 3, 7), ('Text2', 2, 45, 3), ('Text3', 2, 23, 3), ('Text4', 2, 0, 9)]