2014-10-19 47 views
17

你好,我想乘以一個列表中的整數。如何乘以列表中的所有整數

例如;

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

輸出:

l = [2, 4, 6] 

於是我在網上搜索和大部分的答案是互相比如乘對於所有的整數:

[1 * 2 * 3]

+0

在Python終端上輸入'help(map)'。 – Mephy 2014-10-19 01:30:46

回答

40

嘗試list comprehension

l = [x * 2 for x in l] 

這是通過l,每個元素乘以兩。

當然,有多種方法可以做到這一點。如果你到lambda functionsmap,你甚至可以做

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

的功能lambda x: x * 2適用於每個元素l。這相當於:

def timesTwo(x): 
    return x * 2 

l = map(timesTwo, l) 
+0

啊,我看到它做了一個循環。有沒有比循環更直接的方式? (我不知道這是否合理:p) – Andre 2014-10-19 01:32:57

+1

@Ali:儘管列表理解使用循環,但它是一種非常有效的循環,因此列表理解通常比使用明確的for循環要快得多。 – 2014-10-19 02:10:05

8

最Python的方式是使用列表理解:如果您需要爲大量的整數做到這一點

l = [2*x for x in l] 

,使用numpy數組:

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

最後一個替代方法是使用地圖

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

另一種功能性的做法,也許是一個比較容易看比一個匿名函數,如果你走這條路是使用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] 
2

給我的最簡單方法是:

map((2).__mul__, [1, 2, 3]) 
1
#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) 
+1

@MirzaSisic基本上有很多方法可以解決上述問題。我選擇創建一個空列表(results = []),所以在每次迭代之後,我可以將迭代的數字乘以2添加(追加)到空列表中。最後打印出包含迭代數字乘以2的空列表。如果你還沒有得到它,請指出具體情況,以便我可以幫助你。謝謝 – 2017-11-28 00:57:41

+1

@salparadise贊成變量名稱的變化。 – 2017-11-28 01:01:45

0

使用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] 
相關問題