2017-08-04 40 views
1

Ich frage mich, wie kann ich jedes Element in zwei verschiedenen Listen zu multiplizieren.Python-Liste multiplizieren jeden Wert

Zum Beispiel:

list_a = [1,2,3,4,5] list_b = [10,20,30,40,50]

Ich möchte es 1X10 2X20 3X30 4X40 5X50

so machen, dass das Ergebnis sein 10, 40, 90, 160, 250

Ich würde wirklich schätzen, wenn Sie mir helfen können.

+2

Mögliches Duplikat [Wie multiplizieren ich jedes Element in einer Liste mit einer Zahl?] (Https://stackoverflow.com/questions/35166633/how-do-i-multiply-each-element-in-a-list-by-a-number) –

+0

'zip' in der besten Methode dafür. [zip] (https:// d ocs.python.org/3.3/library/functions.html#zip) –

Antwort

0
a = [1,2,3,4,5] 
b = [10,20,30,40,50] 
print [a[i]*b[i] for i in range(len(b))] 

Dies wird hilfreich für Sie

+0

Sie haben vergessen, ihr Produkt zurückzugeben! –

+0

ich werde Frage falsch verstehen jetzt werde ich die Ausgabe ändern –

+0

Warum 'str' in Ihrer Lösung verwendet. @adchoi_97 will' integer' Element in der Liste nicht 'string'. –

-1

eine sauberere Version wäre:

a,b = [1,2,3,4,5],[10,20,30,40,50] 
for i,j in zip(a,b): 
    print '%d x %d = '%(i,j),'%d units'% ((i*j)) 
+1

Sie sollten 'zip' anstelle von' map' verwenden –

+0

Können Sie erklären, welchen Unterschied es macht? Ich meine, spart es Rechenzeit oder was? –

+1

Diese 'Karte' ist für * Mapping-Operationen gedacht und' zip' ist zum Zippen gedacht. Sie verwenden 'zip', um das Mapping durchzuführen. Es ist einfach schlechte Form. –

3

Sie zip Funktion wie unten verwenden können.

>>> list_a = [1,2,3,4,5] 
>>> list_b = [10,20,30,40,50] 
>>> [(x[0]*x[1]) for x in zip(list_a,list_b)] 
[10, 40, 90, 160, 250] 
+2

'[a * b für a, b in zip (list_a, list_b)]' wäre ein wenig besser –

+0

oder 'list (map (operator.mul, list_a, list_b))' –

0
a = [1,2,3,4,5] 
b = [i*i*10 for i in a] 
1

Mit zip():

list_a = [1,2,3,4,5] 
list_b = [10,20,30,40,50] 
final = [k*v for k, v in zip(list_a, list_b)] 
print final 

Ausgang:

[10, 40, 90, 160, 250] 
+0

Für Python 3 müssen Sie ' k, v 'in Klammern wie folgt: '(k, v)'. Die letzte Zeile ist 'final = [k * v für (k, v) in zip (list_a, list_b)]'. – Zcode

+1

Nein, ohne Klammern sollte es auch funktionieren :-) –

+1

Sorry, du hast Recht. Python 3-Dokumentation sagte, dass Klammern benötigt wurden, aber es ist nur der Rückteil der Verständnisliste. – Zcode