Как бы я перебрал 2 списка в Python3, но если список 1 исчерпан, повторите его снова

#python #python-3.x #loops #iteration

#python #python-3.x #циклы #итерация

Вопрос:

Итак, допустим, у меня есть 2 списка.

 A = ['A', 'B', 'C']
B = [1, 2, 3, 4, 5]
  

Как вы можете видеть, оба списка имеют разную длину. Теперь мне было интересно, как бы я сделал так, чтобы он повторялся по обоим спискам, но если список A был полностью повторен, затем повторите список A снова, все еще ожидая завершения списка B.

Пример вывода

 A1
B2
C3
A4
B5
  

Не уверен, имеет ли это смысл, если вы хотите, чтобы я объяснил подробнее, я был бы рад это сделать.

Ответ №1:

Используйте itertools.cycle

Пример:

 from itertools import cycle

A = cycle(['A', 'B', 'C'])
B = [1, 2, 3, 4, 5]

for k,v in zip(A,B):
    print(f"{k}{v}")
  

Вывод:

 A1
B2
C3
A4
B5
  

Ответ №2:

Попробуйте это

 m, n = len(A), len(B)
for idx in range(max(m, n)):
    print(f'{A[idx % m]}{B[idx % n]}')
  

Вывод:

 A1
B2
C3
A4
B5
  

Ответ №3:

Попробуйте это,

 A = ['A', 'B', 'C']
B = [1, 2, 3, 4, 5]
j=0
for i in B:
    if j<len(A):
        print(f'{A[j]}{i}')
        j =1
    else:
        j=0
        print(f'{A[j]}{i}')
        j =1