186 votes

Comment effectuer une multiplication élément par élément de deux listes ?

Je veux effectuer une multiplication par élément, pour multiplier deux listes ensemble par valeur en Python, comme on peut le faire en Matlab.

Voici comment je procéderais en Matlab.

a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]

Une compréhension de liste donnerait 16 entrées de liste, pour chaque combinaison x * y de x de a y y de b . Je ne suis pas sûr de la façon de cartographier cela.

Si quelqu'un est intéressé par la raison, j'ai un ensemble de données, et je veux les multiplier par Numpy.linspace(1.0, 0.5, num=len(dataset)) =) .

351voto

gahooa Points 38006

Utilisez une liste de compréhension mélangée avec zip() :.

[a*b for a,b in zip(lista,listb)]

105voto

NPE Points 169956

Puisque vous utilisez déjà numpy il est judicieux de stocker vos données dans un fichier numpy un tableau plutôt qu'une liste. Une fois que vous avez fait cela, vous obtenez des choses comme les produits par éléments gratuitement :

In [1]: import numpy as np

In [2]: a = np.array([1,2,3,4])

In [3]: b = np.array([2,3,4,5])

In [4]: a * b
Out[4]: array([ 2,  6, 12, 20])

41voto

Brisa Points 263

Utilisez np.multiply(a,b) :

import numpy as np
a = [1,2,3,4]
b = [2,3,4,5]
np.multiply(a,b)

23voto

Nate Points 239

Vous pouvez essayer de multiplier chaque élément dans une boucle. Le raccourci pour faire cela est

ab = [a[i]*b[i] for i in range(len(a))]

15voto

Petr Vepřek Points 113

Encore une autre réponse :

-1 ... nécessite une importation
+1 ... est très lisible

import operator
a = [1,2,3,4]
b = [10,11,12,13]

list(map(operator.mul, a, b))

sorties [10, 22, 36, 52]

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