Tengo las siguientes dos listas:
first = [1,2,3,4,5]
second = [6,7,8,9,10]
Ahora quiero agregar los elementos de ambas listas a una nueva lista.
la salida debe ser
third = [7,9,11,13,15]
La zip
función es útil aquí, se usa con una comprensión de lista.
[x + y for x, y in zip(first, second)]
Si tiene una lista de listas (en lugar de solo dos listas):
lists_of_lists = [[1, 2, 3], [4, 5, 6]]
[sum(x) for x in zip(*lists_of_lists)]
# -> [5, 7, 9]
first
es longitud 10 ysecond
longitud 6, el resultado de comprimir los iterables será la longitud 6.>>> lists_of_lists = [[1, 2, 3], [4, 5, 6]]
>>> [sum(x) for x in zip(*lists_of_lists)]
[5, 7, 9]
De documentos
fuente
Suponiendo que ambas listas
a
yb
tienen la misma longitud, que no es necesario postal, numpy o cualquier otra cosa.Python 2.xy 3.x:
fuente
El comportamiento predeterminado en numpy es agregar componentes
que salidas
fuente
Esto se extiende a cualquier número de listas:
En tu caso,
myListOfLists
sería[first, second]
fuente
izip.from_iterable
?chain
. ActualizadoPrueba el siguiente código:
fuente
map(sum, zip(first, second, third, fourth, ...))
La manera fácil y rápida de hacer esto es:
Alternativamente, puedes usar una suma numpy:
fuente
fuente
solución de una línea
fuente
Mi respuesta se repite con la de Thiru que respondió el 17 de marzo a las 9:25.
Fue más simple y rápido, aquí están sus soluciones:
Necesitas numpy!
matriz numpy podría hacer alguna operación como vectoresfuente
Si tiene un número desconocido de listas de la misma longitud, puede usar la siguiente función.
Aquí el * args acepta un número variable de argumentos de lista (pero solo suma el mismo número de elementos en cada uno). El * se utiliza nuevamente para descomprimir los elementos en cada una de las listas.
Salida:
O con 3 listas
Salida:
fuente
Puede usar
zip()
, que "intercalará" las dos matrices juntas, y luegomap()
, que aplicará una función a cada elemento en un iterable:fuente
Aquí hay otra forma de hacerlo. Hacemos uso de la función interna __add__ de python:
Salida
fuente
Si desea agregar también el resto de los valores en las listas, puede usar esto (esto está funcionando en Python3.5)
fuente
fuente
Aquí hay otra forma de hacerlo. Me está funcionando bien.
fuente
fuente
Quizás el enfoque más simple:
fuente
Si considera sus listas como una matriz numpy, entonces necesita sumarlas fácilmente:
fuente
¿Qué pasa si tiene una lista con diferente longitud, entonces puede intentar algo como esto (usando
zip_longest
)fuente
Puede usar este método, pero solo funcionará si ambas listas son del mismo tamaño:
fuente