2015-10-05 172 views
0

我有一列整數算術運算

[2, 5, 6, 7...n] 

我想執行的算術運算,使;

  1. 計算每個元素的平方和,並且;
  2. 產生每個元素的累積乘法。

對於如:

  1. 2*2 + 5*5 + 6*6 + 7*7+...n*n
  2. 2*5*6*7...*n

我該怎麼做呢?

+0

放一個for循環,直到列表的長度。你會得到每個項目的價值..然後執行數學,你已經顯示在你的例如: –

回答

3

這是一個列表理解或循環相當簡單:

In [1]: L = [2, 5, 6, 7] 

In [2]: sum([e*e for e in L]) 
Out[2]: 114 

In [3]: prod = 1 

In [4]: for e in L: 
    ...:  prod *= e 
    ...:  

In [5]: prod 
Out[5]: 420 

如果你使用的是NumPy,事情就更簡單了,因爲許多數組操作都是矢量化的:

In [7]: import numpy as np 

In [8]: a = np.array(L) 

In [9]: a**2 
Out[9]: array([ 4, 25, 36, 49]) 

In [10]: np.sum(a**2) 
Out[10]: 114 

In [11]: np.prod(a) 
Out[11]: 420 
+0

謝謝你。這是我想要的笏.. :) –

+1

然後你應該接受答案。 – Vicent

2

總結所有的廣場了起來:

sum(map(lambda x: x*x, [2, 5, 6, 7...n])) 

要獲得所有項目的產品:

reduce(lambda x,y: x*y, [2, 5, 6, 7...n]) 
+0

你不是指'reduce'而不是'filter'? –

+0

@tobias_k啊,是的。謝謝。 ;) – wenzul

+1

使用Python3,你應該使用'functools.reduce'。 – Vicent

2

最簡單的方法是循環列表並執行循環內所需的數學函數,然後將結果附加到外部變量。

my_list = [2,3,5,6,7,8] 

square_sum_result = 0 
product_result = 1 
for number in mylist: 
    square_sum_result += pow(number, 2) 
    product_result *= number 

儘管這很可能不是最有效的方式。