Как объединить два списка одновременно? - PullRequest
0 голосов
/ 22 апреля 2020
list1=[a,b,c,d]
list2=[d,e,f,g]

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

list3=[a-d,b-e,c-f,d-g]

Скажите, пожалуйста, как это сделать в al oop, так как мои list1 и list2 имеют много сущностей , list1 и list2 содержат строки. Например:

list1=['cat','dog']
list2=['dog','cat']
list3=['cat-dog','dog-cat']

Ответы [ 2 ]

4 голосов
/ 22 апреля 2020

С помощью zip вы можете объединить два списка и выполнить их итерацию одновременно.

list1=[a,b,c,d]
list2=[d,e,f,g]
list3 = [x-y for x,y in zip(list1,list2)]

РЕДАКТИРОВАТЬ: я ответил с предположением, что в вашем списке есть только целые числа, если вы хотите чтобы сделать то же самое для строк, вы можете сделать это:

list1 = ["a", "b", "c", "d"]
list2 = ["d", "e", "f", "g"]
list3 = ["-".join([x, y]) for x, y in zip(list1, list2)]
3 голосов
/ 22 апреля 2020

Если ваши списки могут быть разной длины, используйте zip_longest:

from itertools import zip_longest

list3 = [x-y for x,y in zip_longest(list1,list2, fillvalue=0)]

Если списки имеют одинаковую длину, они ведут себя как обычные zip, если нет, он заполняет самый короткий список fillvalue (в данном случае нулями), чтобы соответствовать длине другого, вместо игнорирования оставшихся элементов.

Если ваш список содержит строки, лучше использовать Методы работы со строками и изменение значения заполнения.

from itertools import zip_longest

list3 = [str(x) + '-' + str(y) for x,y in zip_longest(list1,list2, fillvalue="")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...