Суммирование элементов списков в цикле 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]