Eu tenho as duas listas a seguir:
first = [1,2,3,4,5]
second = [6,7,8,9,10]
Agora, quero adicionar os itens dessas duas listas em uma nova lista.
saída deve ser
third = [7,9,11,13,15]
A zip
função é útil aqui, usada com uma compreensão de lista.
[x + y for x, y in zip(first, second)]
Se você tiver uma lista de listas (em vez de apenas duas):
lists_of_lists = [[1, 2, 3], [4, 5, 6]]
[sum(x) for x in zip(*lists_of_lists)]
# -> [5, 7, 9]
first
é de comprimento 10 esecond
é o comprimento 6, o resultado de fechar as iterables será comprimento 6.>>> lists_of_lists = [[1, 2, 3], [4, 5, 6]]
>>> [sum(x) for x in zip(*lists_of_lists)]
[5, 7, 9]
De documentos
fonte
Supondo que ambas as listas
a
eb
têm o mesmo comprimento, você não precisa zip, numpy ou qualquer outra coisa.Python 2.xe 3.x:
fonte
O comportamento padrão em numpy é adicionar componentwise
quais saídas
fonte
Isso se estende a qualquer número de listas:
No seu caso,
myListOfLists
seria[first, second]
fonte
izip.from_iterable
?chain
. AtualizadoTente o seguinte código:
fonte
map(sum, zip(first, second, third, fourth, ...))
A maneira mais fácil e rápida de fazer isso é:
Como alternativa, você pode usar numpy sum:
fonte
fonte
solução de uma linha
fonte
Minha resposta é repetida com as de Thiru, que responderam em 17 de março às 9:25.
Era mais simples e rápido, eis as soluções dele:
Você precisa entorpecido!
matriz numpy poderia fazer alguma operação como vetoresfonte
Se você tiver um número desconhecido de listas do mesmo tamanho, poderá usar a função abaixo.
Aqui, o * args aceita um número variável de argumentos da lista (mas soma apenas o mesmo número de elementos em cada um). O * é usado novamente para descompactar os elementos em cada uma das listas.
Resultado:
Ou com 3 listas
Resultado:
fonte
Você pode usar
zip()
, o que "entrelaçará" as duas matrizes juntas emap()
, em seguida , aplicará uma função a cada elemento em um iterável:fonte
Aqui está outra maneira de fazer isso. Utilizamos a função interna __add__ do python:
Resultado
fonte
Se você quiser adicionar também o restante dos valores nas listas, poderá usá-lo (isso está funcionando no Python3.5)
fonte
fonte
Aqui está outra maneira de fazê-lo. Está funcionando bem para mim.
fonte
fonte
Talvez a abordagem mais simples:
fonte
Se você considerar suas listas como uma matriz numpy, precisará adicioná-las facilmente:
fonte
E se você tiver uma lista com tamanho diferente, poderá tentar algo como isto (usando
zip_longest
)fonte
Você pode usar esse método, mas ele funcionará apenas se as duas listas tiverem o mesmo tamanho:
fonte