Как добавить значение для каждого кортежа в списке? - PullRequest
1 голос
/ 02 декабря 2019

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

List_1:
[('xxx', 1), ('yyy', 2), ('zzz', 3), ('aaa', 1), ('fff', 4), ('bbb', 0)]

List_2:
['1', '3', '4', '20', '11', '15']

Desire outcome:
[('xxx', 1, '1'), ('yyy', 2, '3'), ('zzz', 3, '4'), ('aaa', 1, '20'), ('fff', 4, '11'), ('bbb', 0, '15')]

Вот мой код и

for y in List_1:
        for x in List_2:
            desire_list = [list(y) + [x] for y in List_1]

Выходные данные будут добавлять каждое отдельное значение из List_2 к каждому кортежу в List_1

[[('xxx', 1, '1'), ('yyy', 2, '1'), ('zzz', 3, '1'), ('aaa', 1, '1'), ('fff', 4, '1'), ('bbb', 0, '1')]]
[[('xxx', 1, '3'), ('yyy', 2, '3'), ('zzz', 3, '3'), ('aaa', 1, '3'), ('fff', 4, '3'), ('bbb', 0, '3')]]

Совершенно очевидно, что я не делаю это правильно ... Мне интересно, как правильно сделать это и что, если у меня есть несколько списков, которые я хотел бы добавить значения в List_1, как я пыталсяделать из List_2? Например:

List_2:['1', '3', '4', '20', '11', '15']
List_3 ['10', '20', '10', '210', '50', '150']

List_1 [('xxx', 1, '1', '10'), ('yyy', 2, '3', '20'), ('zzz', 3, '4', '10'), ('aaa', 1, '20', '210'), ('fff', 4, '11', '50'), ('bbb', 0, '15', '150')]

1 Ответ

3 голосов
/ 02 декабря 2019

Просто используйте объединение zip и кортежей

>>> lst1 = [('xxx', 1), ('yyy', 2), ('zzz', 3), ('aaa', 1), ('fff', 4), ('bbb', 0)]
>>> lst2 = ['1', '3', '4', '20', '11', '15']
>>> [a + (b,) for a, b in zip(lst1, lst2)]
[('xxx', 1, '1'),
 ('yyy', 2, '3'),
 ('zzz', 3, '4'),
 ('aaa', 1, '20'),
 ('fff', 4, '11'),
 ('bbb', 0, '15')]
...