2013-07-15 4 views
4

물론 몇개의 숫자로 sum()을 사용하면, 그 모든 것을 합친다.하지만 그것에 관한 문서를보고 있었고 나는 이것을 발견했다 :파이썬 : 나는 sum()의 완전한 사용법을 이해하지 못한다.

sum(iterable[, start]) 

"[, 시작]"은 무엇입니까? 이것은 너무 당황 스럽지만 Google을 사용하여 어떤 예도 찾을 수없는 것으로 보입니다. 설명서는 언어를 배우려는 사람에게 상당히 암시 적입니다.

일종의 목록입니까? 나는 그것을 작동시킬 수 없다. 여기 내 시도 중 하나의 예입니다

>>> sum(13,4,5,6,[2,4,6]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sum expected at most 2 arguments, got 5 
+0

메소드 문서에서'[, ..] '는 "선택 사항"을 의미하므로 목록 리터럴과 혼동하지 마십시오. 또한 iterable은 * one * 매개 변수입니다. 문서는 [variadic signature] (http://askawizard.blogspot.com/2008/09/variadic-positional-and-keyword_28.html)에 대해'* args'를 보여줄 것입니다. – user2246674

+0

iterable은 일종의 "컨테이너", EG :'list' 또는'set'이어야합니다. 'sum ([1,2,3,4,5])'일 경우, _alternative_ start-prameter는'sum (iter) + start'와 같습니다. 여기서 start는 정수 또는 실수입니다. – JHolta

답변

7

시작은 합계의 시작 값을 나타냅니다,이 동일시 할 수 있습니다이와

sum(iterable, start) 

:

start + sum(iterable) 

오류의 원인은 반복 가능한 숫자로 요약 할 숫자를 캡슐화하지 않는다는 것입니다. 대신

sum([13, 4, 5, 6]) 

그러면 28 (13 + 4 + 5 + 6)의 값이 생성됩니다. 이렇게하면 :

sum([13, 4, 5, 6], 25) 

대신 (13 + 4 + 5 + 6 + 25) 53를 얻을.

+0

오! 변수 또는 다른 목록 일 수 있습니까? –

+0

@KaizervonMaanen 반복 가능한 것으로 평가되는 표현식을 사용할 수 있습니다. 인자로 전달 된 * 표현식 *의 결과 인 * values ​​* (객체는 값입니다!) - 이것은 표현식에 사용 된 변수 이름을 포함합니다. – user2246674

1

또한 중첩 된 목록을 만들면 (위의 sortof처럼) 합계는 오류를 줄 것임을 명심하십시오 (목록에 정수를 추가하려고 시도했지만 명확하지 않음 - 추가하려고합니까? 또는 목록의 합계에 추가하거나 무엇을?). 따라서 두리스트를 사용하려고 할 때 +는 과부하가 걸리고 두리스트를 하나의리스트로 연결하지만 sum은 물건을 추가하려고 시도하므로 사용자가 묻는 것이 명확하지 않습니다.

이 예제와 함께 설명하는 것이 더 쉽습니다 :이 도움이

>>> mylist = [13, 4, 5, 6, [2,4,6]] 
>>> sum(mylist) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
>>> a = [13, 4, 5, 6] 
>>> b = [2,4,6] 
>>> c = [a,b] 
>>> c 
[[13, 4, 5, 6], [2, 4, 6]] 
>>> sum(c) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'list' 
>>> c = a+b 
>>> c 
[13, 4, 5, 6, 2, 4, 6] 
>>> sum(c) 
40 
>>> sum(c, 23) 
63 

희망.

관련 문제