2014-03-02 3 views
0

일부 수학 표현을 어딘가에 파이썬으로 대기열에 넣으려고합니다. 그리고 나서 결국 합계를 표시하고 싶습니다. 가능무언가의 큐 합계가 끝 부분에 표시됩니다.

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

인가 :

내가 이런 일을하려고?

+0

그냥 명확하게하기 위해 응답, 큐 바로, 그냥 수학 표현식을 들고? – Alejandro

+0

무엇이'sum ("latest")'입니까? 묻는 질문이 명확하지 않습니다. –

답변

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 
+0

짧아 질 수 없습니까? –

+0

대기열을 요약하지 않고 카운터를 가질 수 있습니다. – Alejandro

+0

@AlejandroLucena 카운터에 관한 해결책을 게시 할 수 있습니까? –

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) 연산을 절약 할 수 있습니다.

는 희망이 귀하의 질문 :

관련 문제