假设
list1 = [('WAIT=', '6'), ('WAIT=', '1'), ('WAIT=', '1')]
list2 = [12,2,2]
请注意list1和list2始终具有相同数量的元素,如何用list2中的元素替换list1中每个元组中的第二个元素?那就是:
[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
答案 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)]