代码之家  ›  专栏  ›  技术社区  ›  Johnny Derpp

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

  •  2
  • Johnny Derpp  · 技术社区  · 7 年前

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

    请注意,list1和list2的元素数总是相等的,如何用list2中的元素替换list1中每个元组中的第二个元素?即:

    [('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
    
    4 回复  |  直到 7 年前
        1
  •  5
  •   U13-Forward    7 年前

    将列表理解与 zip 内,然后获取的每个值的第一个值 list1 list2 值作为第二个元素:

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

    输出:

    [('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
    
        2
  •  2
  •   hygull    7 年前

    另一种方法是如下所示(它将允许您拥有一个新列表,每个元组中的任何值为第一项, 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)]
    
        3
  •  1
  •   BENY    7 年前

    使用 operator

    import operator
    l1 = map(operator.itemgetter(0), list1)
    list(zip(l1,list2))
    [('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
    
        4
  •  1
  •   ryan.tran    7 年前

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