2017-08-04 610 views
1

我想知道如何将两个不同列表中的每个元素相乘。python list乘以每个值

例如:

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

我想让它1X10 2X20 3X30 4X40 5X50

,这样的结果将是10, 40, 90, 160, 250

我真的很感激,如果你能帮助我。

+2

的[我如何乘以一个数列表中的每个元素?]可能的复制(HTTPS:/ /stackoverflow.com/questions/35166633/how-do-i-multiply-each-element-in-a-list-by-a-number) –

+0

'zip'为此的最佳方法。[zip](https://d ocs.python.org/3.3/library/functions.html#zip) –

回答

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

这将有助于您

+0

你忘了返回他们的产品! –

+0

我会错误地理解问题现在我将改变输出 –

+0

为什么在你的解决方案中使用'str'@adchoi_97想要'列表'中的整数项不是'字符串'。 –

-1

一个清洁的版本是:

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

你应该用'zip'来代替'map' –

+0

你能解释一下它有什么不同吗?我的意思是它是否节省了计算时间或什么? –

+1

这个'map'是为了*映射操作*而''zip'是为了压缩。您正在使用'zip'来进行映射。这简直是​​糟糕的形式。 –

3

您可以如下使用zip功能。

>>> 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 for a,b in zip(list_a,list_b)]'会有点整齐 –

+0

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

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

使用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 

输出:

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

对于Python 3,你需要把' k,v'如括号括起来:'(k,v)'。最后一行是'final = [k * v(zip,(list_a,list_b)]中的(k,v)]。 – Zcode

+1

不,没有括号它应该工作:-) –

+1

对不起,你是对的。 Python 3文档表示需要括号,但它只是理解列表的返回部分。 – Zcode