Суммирование элементов списков в цикле for

Итак, основа моего вопроса приведена здесь. Ведь мне нужно добавить элементы списков. В простейшем примере:

first = [1,2]
second = [6,7]

затем

[x + y for x, y in zip(first, second)]

который дает:

#[7,9]

Однако моя проблема в том, что я создаю количество списков через цикл for. В цикле for списки не сохраняются, поэтому для их просмотра можно использовать print(list) в конце цикла, и он печатает списки. Теперь, как я могу написать код для просмотра созданных списков и суммирования элементов указанным выше способом?

Пример:

l = []
for i in range(2):
    l= list(range(5))
    print(l)

вышесказанное производит:

#[0, 1, 2, 3, 4]
#[0, 1, 2, 3, 4]

Как добавить строку в цикл for для суммирования элементов списков один за другим, чтобы получить:

#[0, 2, 4, 6, 8]

2 ответа

Решение

Используйте переменную для хранения итогов и обновите ее в цикле

totals = [0]*5
for i in range(5):
    l = list(range(5))
    totals = [x + y for x, y in zip(totals, l)]
print totals

Или вы можете сохранить все свои списки в другом списке, а затем использовать свою оригинальную идею:

all_lists = []
for i in range(5):
    l = list(range(5))
    all_lists.append(l)
totals = [sum(lists) for lists in zip(*all_lists)]

Насколько я понимаю, вот еще один способ сделать это, то есть с помощью оператора add,

from operator import add
n=5
l = [0]*n
for i in range(2):
    l = map(add, l, range(n))

print([x for x in l]) 

Выход:

[0, 2, 4, 6, 8]
Другие вопросы по тегам