您好,我希望将列表中的整数相乘。
例如;
l = [1, 2, 3]
l = [1*2, 2*2, 3*2]
输出:
l = [2, 4, 6]
所以我在网上搜索,大多数答案是关于将所有整数相互乘以,如:
[1 * 2 * 3]
答案 0 :(得分:64)
l = [x * 2 for x in l]
这会经过l
,将每个元素乘以2。
当然,有多种方法可以做到这一点。如果你进入lambda functions和map
,你甚至可以
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]