168 votes

Ajouter la SOMME des valeurs de deux LISTE dans une nouvelle LISTE

J'ai les deux listes suivantes :

first = [1,2,3,4,5]
second = [6,7,8,9,10]

Je veux maintenant ajouter les éléments de ces deux listes dans une nouvelle liste.

La sortie devrait être

third = [7,9,11,13,15]

11voto

inspectorG4dget Points 25092

Cela s'étend à un nombre quelconque de listes :

[sum(sublist) for sublist in itertools.izip(*myListOfLists)]

Dans votre cas, myListOfLists serait [first, second]

6voto

Thiru Points 164

Le moyen le plus simple et le plus rapide est de le faire :

three = [sum(i) for i in zip(first,second)] # [7,9,11,13,15]

Alternativement, vous pouvez utiliser numpy sum :

from numpy import sum
three = sum([first,second], axis=0) # array([7,9,11,13,15])

6voto

Anurag Misra Points 728
first = [1, 2, 3, 4, 5]
second = [6, 7, 8, 9, 10]
three = list(map(sum, first, second))
print(three)

# Output 
[7, 9, 11, 13, 15]

5voto

Shadowman Points 51

La solution d'une seule phrase

list(map(lambda x,y: x+y, a,b))

3voto

Wing Points 28

Si vous avez un nombre inconnu de listes de même longueur, vous pouvez utiliser la fonction ci-dessous.

Ici, le *args accepte un nombre variable d'arguments de liste (mais ne totalise que le même nombre d'éléments dans chacun). L'* est utilisé à nouveau pour décomposer les éléments de chacune des listes.

def sum_lists(*args):
    return list(map(sum, zip(*args)))

a = [1,2,3]
b = [1,2,3]  

sum_lists(a,b)

Sortie :

[2, 4, 6]

Ou avec 3 listes

sum_lists([5,5,5,5,5], [10,10,10,10,10], [4,4,4,4,4])

Sortie :

[19, 19, 19, 19, 19]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X