Архивирование вложенных списков - PullRequest
3 голосов
/ 09 июля 2019

Я пытаюсь, но не могу каким-то образом заархивировать следующие 2 списка.

list1=[(1,2,3),(4,5,6),(7,8,9)]
list2=[10,11,12]
zippedlist=[(1,2,3,10),(4,5,6,11),(7,8,9,12)]

Сначала я думал, что распаковка list1 и запуск zip(*list1,list2) сработают, но теперь я понимаю, что это не сработает.

Я подозреваю, что это можно сделать, используя один или несколько циклов for с функцией zip, но я не слишком уверен, как это будет работать. Любой совет, как мне поступить?

Ответы [ 4 ]

3 голосов
/ 09 июля 2019

Вы также можете использовать map:

list(map(lambda x, y: x +(y,), list1, list2))
# [(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]
3 голосов
/ 09 июля 2019

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

Пример:

list1=[(1,2,3),(4,5,6),(7,8,9)]
list2=[10,11,12]

result = [tuple(list(i) + [v]) for i, v in zip(list1, list2)]
print(result)

Выход:

[(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]
1 голос
/ 09 июля 2019

Или просто используйте оператор + в своем понимании списка:

list1=[(1,2,3),(4,5,6),(7,8,9)]
list2=[10,11,12]

new_list = [i+(v,) for i,v in zip(list1,list2)]

#[(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]
1 голос
/ 09 июля 2019

Более простым для понимания является распространение кортежа и списка присоединения 2, а затем преобразование его в кортеж снова.

result = list(map(lambda x, y: (*x, y) , list1, list2))

result = [(1, 2, 3, 10), (4, 5,6, 11), (7, 8, 9, 12)]

...