Вы можете использовать понимание списка, чтобы добавить элементы из обоих списков, сжатых вместе, и использовать itertools.cycle
, так что итератор a
повторяется столько раз, сколько необходимо, пока b
не будет исчерпан.:
from itertools import cycle
a = [50, 17, 54, 26]
b = [19, 7, 8, 18, 36, 8, 18, 36, 18, 14]
[i+j for i,j in zip(cycle(a), b)]
Вывод
[69, 24, 62, 44, 86, 25, 72, 62, 68, 31]
Подробности
Если вы посмотрите на итераторкортежей, сгенерированных из заархивированного выражения:
list(zip(cycle(a),b))
[(50, 19),
(17, 7),
(54, 8),
(26, 18),
(50, 36),
(17, 8),
(54, 18),
(26, 36),
(50, 18),
(17, 14)]
Вы можете видеть, что элементы в a
циклически повторяются до тех пор, пока не исчерпан другой итератор, что позволяет очень легко выполнить некоторые операции с чередующимися элементами.