Как выполнить итерацию по двум спискам в определенном порядке

#python #for-loop

#python #for-цикл

Вопрос:

У меня есть два списка:

 list1 = ['A','C','E','G','A']
list2 = ['B','D','F','H','N']
 

Я хотел бы создать эти новые имена и добавить их в пустой список

 A_vs_B
C_vs_D
E_vs_F
G_vs_H
A_vs_N
 

Структура такова: 1-й элемент в списке1 с 1-м элементом в списке 2 и так далее. Мне нужны только эти имена.

Это то, что я делал до сих пор

 newlist = []
for i in list1:
    for j in list 2:
        name = i   '_vs_'   j
        newlist.append(name)
 

Проблема в том, что он создает все возможные комбинации имен между list1
amp; list2. Как мне ограничить мой цикл, чтобы создавать только те имена, которые я хочу?

Ответ №1:

используйте zip(), который принимает два списка (или другие итерируемые) и создает итерацию кортежей. В цикле for распакуйте кортеж в переменные i и j

 newlist = []
for i, j in zip(list1, list2):
    name = i   '_vs_'   j
    newlist.append(name)
 

Вы могли бы еще больше улучшить свой код, используя строки формата:

 newlist = []
for i, j in zip(list1, list2):
    newlist.append(f'{i}_vs_{j}')
 

и использование понимания списка:

 newlist = [f'{i}_vs_{j}' for i, j in zip(list1, list2)]
 

Ответ №2:

Вы могли бы попробовать:

 list1 = ['A','C','E','G','A']
list2 = ['B','D','F','H','N']

newlist = []

for i in range(0, len(list1)):
    name = list1[i]   '_vs_'   list2[i]
    newlist.append(name)
print(newlist)
 

Комментарии:

1. Ты так много времени, чтобы ответить