J'ai les deux listes suivantes:
first = [1,2,3,4,5]
second = [6,7,8,9,10]
Maintenant, je veux ajouter les éléments de ces deux listes dans une nouvelle liste.
la sortie doit être
third = [7,9,11,13,15]
La zip
fonction est utile ici, utilisée avec une compréhension de liste.
[x + y for x, y in zip(first, second)]
Si vous avez une liste de listes (au lieu de seulement deux listes):
lists_of_lists = [[1, 2, 3], [4, 5, 6]]
[sum(x) for x in zip(*lists_of_lists)]
# -> [5, 7, 9]
first
longueur est 10 et lasecond
longueur 6, le résultat de la compression des itérables sera de longueur 6.>>> lists_of_lists = [[1, 2, 3], [4, 5, 6]]
>>> [sum(x) for x in zip(*lists_of_lists)]
[5, 7, 9]
À partir de documents
la source
En supposant que les deux listes
a
etb
ont même longueur, vous n'avez pas besoin zip, numpy ou toute autre chose.Python 2.x et 3.x:
la source
Le comportement par défaut dans numpy est d'ajouter un composant
quelles sorties
la source
Cela s'étend à n'importe quel nombre de listes:
Dans votre cas,
myListOfLists
serait[first, second]
la source
izip.from_iterable
?chain
. Mise à jourEssayez le code suivant:
la source
map(sum, zip(first, second, third, fourth, ...))
Le moyen simple et rapide de le faire est:
Vous pouvez également utiliser numpy sum:
la source
la source
solution monotouche
la source
Ma réponse est répétée avec celle de Thiru qui y a répondu le 17 mars à 9h25.
C'était plus simple et plus rapide, voici ses solutions:
Vous avez besoin de numpy!
Le tableau numpy pourrait faire des opérations comme des vecteursla source
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 fait la somme que du même nombre d'éléments dans chacun). Le * est à nouveau utilisé pour décompresser les éléments de chacune des listes.
Production:
Ou avec 3 listes
Production:
la source
Vous pouvez utiliser
zip()
, qui "entrelacera" les deux tableaux ensemble, puismap()
, qui appliquera une fonction à chaque élément dans un itérable:la source
Voici une autre façon de procéder. Nous utilisons la fonction interne __add__ de python:
Production
la source
Si vous souhaitez ajouter également le reste des valeurs dans les listes, vous pouvez l'utiliser (cela fonctionne dans Python3.5)
la source
la source
Voici une autre façon de le faire. Cela fonctionne très bien pour moi.
la source
la source
Peut-être l'approche la plus simple:
la source
Si vous considérez vos listes comme un tableau numpy, vous devez les additionner facilement:
la source
Que faire si vous avez une liste avec une longueur différente, alors vous pouvez essayer quelque chose comme ça (en utilisant
zip_longest
)la source
Vous pouvez utiliser cette méthode mais cela ne fonctionnera que si les deux listes sont de la même taille:
la source