OVH Cloud OVH Cloud

Multiplication de liste

5 réponses
Avatar
vincent daanen
Bonjour a tous

je debute en python, et je cherche la fonction qui permet de multiplier
les elements de 2 listes termes a termes autrement que par une boucle
for ecrite en python dans mon code.

ex
liste A : A=[1,2,3,4]
liste B : B=[5,6,7,8]

resultat de la fonction Python qui va bien [5,12,21,32]

Est-ce que cela existe ?

D'avance merci

Vince

5 réponses

Avatar
koolltrash
vincent daanen writes:

Bonjour a tous

je debute en python, et je cherche la fonction qui permet de
multiplier les elements de 2 listes termes a termes autrement que par
une boucle for ecrite en python dans mon code.

ex
liste A : A=[1,2,3,4]
liste B : B=[5,6,7,8]

resultat de la fonction Python qui va bien [5,12,21,32]

Est-ce que cela existe ?


Si tu cherches a etre vraiment rapide sur ce genre d'operations,
regarde du cote de Numarray :
http://www.stsci.edu/resources/software_hardware/numarray

exemple pour ton cas:

import numarray
a = numarray.array([1,2,3,4])
b = numarray.array([5,6,7,8])
a*b
array([ 5, 12, 21, 32])




--
Koollman



Avatar
Gilles Lenfant

vincent daanen writes:


Bonjour a tous

je debute en python, et je cherche la fonction qui permet de
multiplier les elements de 2 listes termes a termes autrement que par
une boucle for ecrite en python dans mon code.

ex
liste A : A=[1,2,3,4]
liste B : B=[5,6,7,8]

resultat de la fonction Python qui va bien [5,12,21,32]

Est-ce que cela existe ?



Si tu cherches a etre vraiment rapide sur ce genre d'operations,
regarde du cote de Numarray :
http://www.stsci.edu/resources/software_hardware/numarray

exemple pour ton cas:


import numarray
a = numarray.array([1,2,3,4])
b = numarray.array([5,6,7,8])
a*b




array([ 5, 12, 21, 32])



Autrement, sans extension, et si les performances du truc ci-dessous
suffisent :

a = [1,2,3,4]
b = [5,6,7,8]
c = [a[i]*b[i] for i in xrange(len(a))]
c
[5, 12, 21, 32]




Voilà...




Avatar
koolltrash
Gilles Lenfant writes:


Autrement, sans extension, et si les performances du truc ci-dessous
suffisent :

a = [1,2,3,4]
b = [5,6,7,8]
c = [a[i]*b[i] for i in xrange(len(a))]
c
[5, 12, 21, 32]




Voilà...


dans ce cas:

import operator
c = map(operator.mul, a, b)




me semble le plus rapide en python pur




Avatar
Xavier Combelle
import operator
c = map(operator.mul, a, b)





me semble le plus rapide en python pur


Moi je préfère, plus lent, mais sans map:

a = [1,2,3,4]
b = [5,6,7,8]
[a*b for a,b in zip(a,b) ]
[5, 12, 21, 32]







Avatar
vincent daanen
vincent daanen wrote:

Bonjour a tous

je debute en python, et je cherche la fonction qui permet de
multiplier les elements de 2 listes termes a termes autrement que par
une boucle for ecrite en python dans mon code.

ex
liste A : A=[1,2,3,4]
liste B : B=[5,6,7,8]

resultat de la fonction Python qui va bien [5,12,21,32]

Est-ce que cela existe ?

D'avance merci

Vince


Merci a tous pour vos reponses !

j'ai essaye la version 'map' mais c'est bcp trop lent ! Je me suis
rabattu sur matlab !

Vince