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

时间:2014-10-19 01:29:29

标签: python list multiplication scalar elementwise-operations

您好,我希望将列表中的整数相乘。

例如;

l = [1, 2, 3]
l = [1*2, 2*2, 3*2]

输出:

l = [2, 4, 6]

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

[1 * 2 * 3]

5 个答案:

答案 0 :(得分:64)

尝试list comprehension

l = [x * 2 for x in l]

这会经过l,将每个元素乘以2。

当然,有多种方法可以做到这一点。如果你进入lambda functionsmap,你甚至可以

l = map(lambda x: x * 2, l)

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

def timesTwo(x):
    return x * 2

l = map(timesTwo, l)

答案 1 :(得分:16)

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

l = [2*x for x in l]

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

l = numpy.array(l, dtype=int)*2

最后一种选择是使用地图

l = list(map(lambda x:2*x, l))

答案 2 :(得分:4)

如果你走这条路线,另一个比匿名函数更容易看的功能方法是使用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]

答案 3 :(得分:3)

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

map((2).__mul__, [1, 2, 3])

答案 4 :(得分:1)

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