我试图将某些数学表达式排在某个地方进入python,然后最后我想展示它们的总结。
我正在尝试做这样的事情:
for i in range(0, n-1): sum_queue(pow(-1,i)/((2*i)+1))
print(sum(0)) #or sum("latest")
有可能吗?
答案 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)操作。
希望这能回答你的问题:)