Подтвердить что ты не робот

Как добавить соответствующие элементы из нескольких списков чисел?

У меня есть несколько списков чисел:

[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
[3, 4, 5, 6, 7]

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

Вот такой вывод, который я бы хотел получить от этого списка.

[6, 9, 12, 15, 18]

Я знаю, что мне понадобится какой-то цикл, но как я могу сделать это элегантно?

4b9b3361

Ответ 1

Попробуйте этот код функционального стиля:

>>> map(sum, zip(*lists))
[6, 9, 12, 15, 18]

Функция zip соответствует элементам с тем же индексом.

>>> zip(*lists)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7)]

Затем sum применяется к каждому кортежу с помощью map.

Посмотрите, как он работает онлайн: ideone


Обратите внимание, что в Python 3.x, map больше не возвращает список. Если вам нужен список, см. Следующий вопрос:

(Вы можете просто позвонить list).

Ответ 2

>>> lis=[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]]

>>> [sum(x) for x in zip(*lis)]
[6, 9, 12, 15, 18]

Ответ 3

Используя numpy:

>>> seq = np.array([
... [1,2,3,4,5],
... [2,3,4,5,6],
... [3,4,5,6,7]])
>>> np.sum(seq,axis=0)
array([ 6,  9, 12, 15, 18])

Ответ 4

Предполагая:

a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = [3,4,5,6,7]

просто выполните это:

[sum(n) for n in zip(*[a, b, c])]

Ответ 5

Как насчет:

a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = [3,4,5,6,7]

s = map(sum, zip(a,b,c))