2015-10-05 195 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 

尽管这很可能不是最有效的方式。