【问题标题】:python list multiply each valuepython list 将每个值相乘
【发布时间】:2017-08-04 05:19:06
【问题描述】:

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

例如:

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

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

所以结果将是10, 40, 90, 160, 250

如果您能帮助我,我将不胜感激。

【问题讨论】:

标签: python python-3.x list


【解决方案1】:

您可以使用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]

【讨论】:

  • [a*b for a,b in zip(list_a,list_b)] 会更整洁一些
  • list(map(operator.mul, list_a, list_b))
【解决方案2】:

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

【讨论】:

  • 对于 Python 3,您需要将 k,v 放在括号中,如下所示:(k,v)。最后一行是final = [k*v for (k, v) in zip(list_a, list_b)]
  • 对不起,你是对的。 Python 3 文档说需要括号,但它只是理解列表的返回部分。
【解决方案3】:
a = [1,2,3,4,5]
b = [i*i*10 for i in a]

【讨论】:

    【解决方案4】:
    a = [1,2,3,4,5] 
    b = [10,20,30,40,50]
    print [a[i]*b[i] for i in range(len(b))]
    

    这对你有帮助

    【讨论】:

    • 你忘记退货了!
    • 我会错误地理解问题,现在我将更改输出
    • 为什么在您的解决方案中使用str。@adchoi_97 想要integer 列表中的项目而不是string
    【解决方案5】:

    更简洁的版本是:

    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))
    

    【讨论】:

    • 你应该使用zip而不是map
    • 你能解释一下它有什么不同吗?我的意思是它节省了计算时间还是什么?
    • map 用于映射操作zip 用于压缩。您正在使用zip 进行映射。这简直是​​糟糕的形式。
    • 您不需要None 参数,只需zip(a, b)
    • 是的,我查过了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2021-08-10
    • 2018-05-09
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多