如何将列表中的所有整数相乘

And*_*dre 40 python scalar list multiplication elementwise-operations

您好,我想将列表中的整数相乘.

例如;

l = [1, 2, 3]
l = [1*2, 2*2, 3*2]
Run Code Online (Sandbox Code Playgroud)

输出:

l = [2, 4, 6]
Run Code Online (Sandbox Code Playgroud)

所以我在网上搜索,大多数答案是关于将所有整数相互乘以,例如:

[1*2*3]

APe*_*son 69

尝试列表理解:

l = [x * 2 for x in l]
Run Code Online (Sandbox Code Playgroud)

这样l,每个元素乘以2.

当然,有不止一种方法可以做到这一点.如果你到lambda函数map,你甚至可以做

l = map(lambda x: x * 2, l)
Run Code Online (Sandbox Code Playgroud)

将函数lambda x: x * 2应用于每个元素l.这相当于:

def timesTwo(x):
    return x * 2

l = map(timesTwo, l)
Run Code Online (Sandbox Code Playgroud)

  • @Ali:虽然列表推导使用循环,但它是一种非常有效的循环,因此列表推导通常比使用显式的`for`循环快得多. (2认同)

Jos*_*hua 20

最pythonic的方式是使用列表理解:

l = [2*x for x in l]
Run Code Online (Sandbox Code Playgroud)

如果需要对大量整数执行此操作,请使用numpy数组:

l = numpy.array(l, dtype=int)*2
Run Code Online (Sandbox Code Playgroud)

最后一种选择是使用地图

l = list(map(lambda x:2*x, l))
Run Code Online (Sandbox Code Playgroud)


bla*_*s75 6

对我来说最简单的方法是:

map((2).__mul__, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)


mir*_*ulo 5

另一种函数式方法可能比匿名函数更容易看,如果你走那条路的话,它是使用具有固定倍数functools.partial的两个参数operator.mul

>>> from functools import partial
>>> from operator import mul
>>> double = partial(mul, 2)
>>> list(map(double, [1, 2, 3]))
[2, 4, 6]
Run Code Online (Sandbox Code Playgroud)


小智 5

使用numpy:

    In [1]: import numpy as np

    In [2]: nums = np.array([1,2,3])*2

    In [3]: nums.tolist()
    Out[4]: [2, 4, 6]
Run Code Online (Sandbox Code Playgroud)