59

您好,所以我想将列表中的整数相乘。

例如;

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

输出:

l = [2, 4, 6]

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

[1*2*3]

4

6 回答 6

99

尝试列表理解

l = [x * 2 for x in l]

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

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

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

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

def timesTwo(x):
    return x * 2

l = map(timesTwo, l)

请注意,它map()返回的是一个地图对象,而不是一个列表,因此如果您之后真的需要一个列表,您可以在list()之后使用该函数,例如:

l = list(map(timesTwo, l))

感谢Minyc510 在评论中的澄清。

于 2014-10-19T01:31:20.947 回答
26

The most pythonic way would be to use a list comprehension:

l = [2*x for x in l]

If you need to do this for a large number of integers, use numpy arrays:

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

A final alternative is to use map

l = list(map(lambda x:2*x, l))
于 2014-10-19T01:34:02.157 回答
6

如果您走这条路线,另一种可能比匿名函数更容易查看的函数方法是使用具有固定倍数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]
于 2016-05-25T11:51:54.690 回答
6

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

map((2).__mul__, [1, 2, 3])
于 2017-04-03T13:28:25.890 回答
4

使用 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]
于 2018-01-19T06:29:30.757 回答
0
#multiplying each element in the list and adding it into an empty list
original = [1, 2, 3]
results = []
for num in original:
    results.append(num*2)# multiply each iterative number by 2 and add it to the empty list.

print(results)
于 2017-11-27T01:28:14.087 回答