Python - Fusiona dos listas con una concatenación simultánea

ListA = [1,2,3]
ListB = [10,20,30]

Deseo agregar juntos el contenido de las listas (1 + 10,2 + 20,3 + 30) creando la siguiente lista:

ListC = [11,22,33]

¿Hay alguna función que combine listas específicamente de esta manera?

0

2 Respuestas

@iCodez ha dado una gran respuesta, pero en casos que se aplican a situaciones más complejas y que requerirá una buena cantidad de manipulación (y concatenación) entre listas, numpy es una gran y poderosa herramienta para aprender! Así es como resolverías tu problema con numpy:

#import it
import numpy as np
#state your lists as numpy arrays
array1 = np.array(ListA)
array2 = np.array(ListB)

que luego configura ambas listas como matrices numpy. ¡Ahora todo lo que haces es agregarlos!

>>> concatenated = array1 + array2
>>> print concatenated
[11, 22, 33]

Ahora esto devuelve una instancia de una matriz numpy, por lo que si la quiere como una lista, puede hacer concatenated.tolist() . Como puede ver, esto es bastante útil cuando mapea operaciones matemáticas entre listas. Hay muchas cosas que puedes hacer con numpy y te sugiero que lo analices.

Nota: Entiendo que usar numpy para resolver un problema tan rápido y sencillo es más exhaustivo de lo necesario, pero por si acaso fuera una rápida "¿cómo puedo resolver operaciones en múltiples listas?", Numpy haría su vida mucho más fácil.

0
agregado
Muy bien: tal vez solo - np.add (ListA, ListB) en su lugar ...
agregado el autor Jon Clements, fuente

Esto funciona:

>>> ListA = [1,2,3]
>>> ListB = [10,20,30]
>>> list(map(sum, zip(ListA, ListB)))
[11, 22, 33]
>>>

Todos los complementos utilizados anteriormente se explican aquí .


Otra solución sería usar una lista de comprensión .

Dependiendo de tu gusto, podrías hacer esto:

>>> [sum(x) for x in zip(ListA, ListB)]
[11, 22, 33]
>>>

o esto:

>>> [x+y for x,y in zip(ListA, ListB)]
[11, 22, 33]
>>>
0
agregado
En mi extremo tengo que escribir [k para k en el mapa (...)] para hacer que produzca la lista; de lo contrario, obtengo , tal vez esto sea diferente para Python 3.
agregado el autor Lasse Vågsæther Karl, fuente
La función 'suma' parece no funcionar con elementos de lista de tipo de cadena.
agregado el autor multigoodverse, fuente
@ LasseV.Karlsen - Sí, lo es. Mis disculpas. No vi la etiqueta de Python 3.x. Actualicé mi publicación.
agregado el autor iCodez, fuente
@JonClements - Actualizado.
agregado el autor iCodez, fuente
@ArditS. - Sí, eso es lo esperado. sum se usa normalmente en listas de enteros y/o flotantes. Además, no admite listas de cadenas. Si desea fusionar listas de cadenas, entonces mi última solución podría funcionar para usted. De lo contrario, le recomendaría que haga una nueva pregunta para obtener ayuda específica para su problema.
agregado el autor iCodez, fuente
Tal vez mantener la compilación de listas más consistente con el enfoque map ... [sum (items) para elementos en zip (listA, listB)]
agregado el autor Jon Clements, fuente
@ LasseV.Karlsen sí, en Python 2 map devuelve una lista, mientras que en Python 3 devuelve un objeto generador.
agregado el autor Roberto, fuente