如何在另一个列表的元组中插入列表元素

时间:2018-12-12 02:56:21

标签: python python-3.x list

假设

list1 = [('WAIT=', '6'), ('WAIT=', '1'), ('WAIT=', '1')]
list2 = [12,2,2]

请注意list1和list2始终具有相同数量的元素,如何用list2中的元素替换list1中每个元组中的第二个元素?那就是:

[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]

4 个答案:

答案 0 :(得分:5)

使用列表中包含zip的列表理解,然后将list1 list的每个值的第一个值作为第一个元素,并将每个list2的值作为第二个元素:

print([(x[0],y) for x,y in zip(list1,list2)])

输出:

[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]

答案 1 :(得分:2)

执行此操作的另一种方法如下(它允许您在每个元组WAIT=WAIT1=等中创建一个新列表,该列表的第一个元素的值都可以是):

list1 = [('WAIT=', '6'), ('WAIT=', '1'), ('WAIT=', '1')]
list2 = [12,2,2]

for i, n in enumerate(list2):  
    list1[i] = (list1[i][0], n) 

print(list1) 
# [('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]

答案 2 :(得分:1)

使用operator

import operator
l1 = map(operator.itemgetter(0), list1)
list(zip(l1,list2))
[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]

答案 3 :(得分:1)

由于元组对象不支持项目分配,因此我想我们需要创建一个新的元组列表。您可以使用这一行来获取结果。

[(slice[0], replacement) for slice, replacement in zip(list1, list2)]