Как вставить элементы списка внутри кортежей в другой список - PullRequest
0 голосов
/ 12 декабря 2018

Предположим,

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

Принимая во внимание, что list1 и list2 всегда будут иметь одинаковое количество элементов, как мне заменить 2-й элемент в каждом кортеже в list1 на элементы в list2?То есть:

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

Ответы [ 4 ]

0 голосов
/ 12 декабря 2018

Поскольку объект кортежа не поддерживает назначение элементов, я предполагаю, что нам нужно будет создать новый список кортежей.Вы можете использовать эту строку, чтобы получить результат.

[(slice[0], replacement) for slice, replacement in zip(list1, list2)]
0 голосов
/ 12 декабря 2018

Использование operator

import operator
l1 = map(operator.itemgetter(0), list1)
list(zip(l1,list2))
[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
0 голосов
/ 12 декабря 2018

Другой способ сделать то же самое заключается в следующем (это позволит вам иметь новый список с любым значением 1-го элемента в каждом кортеже, 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)]
0 голосов
/ 12 декабря 2018

Используйте понимание списка с zip внутри, затем получите первое значение каждого значения списка list1 в качестве первого элемента и каждого значения list2 в качестве второго элемента:

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

Выходные данные:

[('WAIT=', 12), ('WAIT=', 2), ('WAIT=', 2)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...