事物的队列总和然后最终显示它

时间:2014-03-02 11:33:18

标签: python math queue mathematical-expressions

我试图将某些数学表达式排在某个地方进入python,然后最后我想展示它们的总结。

我正在尝试做这样的事情:

for i in range(0, n-1): sum_queue(pow(-1,i)/((2*i)+1))
print(sum(0)) #or sum("latest")

有可能吗?

2 个答案:

答案 0 :(得分:1)

Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
>>> queue = []
>>> n = 10
>>> for i in range(0, n-1):
...     queue.append(pow(-1,i)/((2*i)+1))
... 
>>> queue
[1, -1, 0, -1, 0, -1, 0, -1, 0]
>>> sum(queue)
-3
>>> queue = [pow(-1,i)/((2*i)+1) for i in range(0, n-1)]
>>> sum(queue)
-3
>>> 

如果您不需要临时列表,可以使用生成器:

>>> sum(pow(-1,i)/((2*i)+1) for i in range(0, n-1))
-3

答案 1 :(得分:1)

根据我对@warwaruk的答复的评论,这可以缩短为使用计数器。虽然它违背了使用队列的目的,但由于此处的唯一操作是将值相加,因此不一定需要队列。

从技术上讲,如果您要对append()

之后的所有值执行任何类型的算术运算,则不需要队列
n = 10;
total = 0;
for i in range(0,n-1): 
  total += (pow(-1,i)/((2*i)+1));
print(total);

不是将值附加到队列然后sum(),而是在同一个for循环中完成所有这些。

如果你想看一下渐近分析,它们都是O(n),但是这段代码更短,可以省去函数调用和另外的O(n)操作。

希望这能回答你的问题:)