2016-09-02 5 views
-1
arr.rsplit(',', len(arr)) 

    print sum(arr) 

"1,2,3,4"의 문자열을 입력하면 첫 번째 줄에서 1,2,3,4의 목록으로 나눕니다. 그러나 합계를 인쇄 할 때 오류 메시지가 나타납니다.파이썬에서 목록을 합하는 방법

+0

왜 당신은 특별히'split'보다'rsplit'을 사용하고, split의 수를 제한 할 필요가 없을 때 두번째 인자를 전달합니까? 또한 문자열에 정수의 텍스트 표현이 포함되어 있더라도 정수가 아닌 문자열 목록이 있습니다. – user2357112

답변

0

합계를하기 전에 결과를 정수로 나눠서 변환해야합니다. 이 단순히 것 당신의 덜 효율적인 구문

i=0 
for a in arr.split(','): i=i+float(a) #use int() if you want integers 

print i 

:

arr_list = arr.split(',') 
result = sum(int(i) for i in arr_list) 
+0

숫자를 정수 또는 실수로 나타내려면 정확히 일치하거나 부동합니다. – AER

+0

@AER 이것은 단지 예일뿐입니다. 감사합니다. – Zety

0

배열을 요약하는 가장 좋은 방법은 (당신이 부동 소수점 숫자가 아닌 문자열로 배열 요소를 변환해야합니다)입니다 be :

i=0 
for a in arr.rsplit(',', len(arr)): i=i+float(a) #use int() if you want integers 


print i 

희망이 있습니다. 귀하의 경우 귀하의 분할 문자열에서 변수

1

타입의 this reference을 확인하지만 결과는 다시 할당되지 않은 arr 그래서 당신의 변수 arr 값은 sum(arr)을 적용하는 중을주고있다 그래서, 문자열 남아 변경지고 있지 않습니다 오류. 당신이 도착 했을 할당한다면 분할 요소의 형태는 <class 'str'> 그래서 파이썬 3 rsplit 솔루션 대신 split를 사용하려고 integer

로 변환된다

arr = "1,2,3,4" 
arr = map(int,arr.split(',')) 
print(sum(arr)) 

출력 : 10

각 요소를 정수로 변환 한 다음 합계를 취합니다. 당신이 ARR 인쇄하려고한다면 :지도 방법 후 print(arr)는 출력을 제공합니다 <map object at 0x7f90c081acc0> 그래서 당신은 rsplit를 사용하려면 arr = list(map(int,arr.split(',')))

을주고 그래서 그 대신 arr = map(int,arr.split(','))의 요소에 액세스 할 수 listarr 변환을 한 후 솔루션 (파이썬 3) :

관련 문제