Python의 sum()
함수는 사용하여 리스트, 튜플 등, Iterable 객체가 갖고 있는 모든 요소의 합계를 계산하고 그 결과를 리턴합니다.
1. sum(iterable)
sum()
은 인자로 iterable 객체를 받으며, iterable의 모든 숫자를 더한 결과를 리턴합니다.
리스트, 튜플 모두 iterable이라서 sum()으로 모든 요소들의 합계를 구할 수 있습니다.
list = [10, 22.3, 19.5, 2, 9, 3]
sum_list = sum(list)
print(sum_list)
tuple = (10, 22.3, 19.5, 2, 9, 3)
sum_tuple = sum(tuple)
print(sum_tuple)
Output:
65.8
65.8
딕셔너리의 경우, 딕셔너리의 keys나 values는 iterable이기 때문에 sum()으로 합을 계산할 수 있습니다.
dict = {'a': 1, 'b': 2, 'c': 3}
sum_dict = sum(dict.values())
print(sum_dict)
dict = {1: 'a', 2: 'b', 3: 'c'}
sum_dict = sum(dict.keys())
print(sum_dict)
Output:
6
6
2. sum(iterable, start)
sum()
에 인자로 iterable과 함께 start를 전달하면, start와 요소들의 합을 더한 값을 리턴합니다.
즉, 0부터 요소들의 합계를 더하는 것이 아니라, 초기 값 start
에 요소들의 합을 더합니다.
start 요소를 입력하지 않으면 디폴트 값 0으로 설정됩니다.
list = [10, 22.3, 19.5, 2, 9, 3]
sum_list = sum(list, 1000)
print(sum_list)
tuple = (10, 22.3, 19.5, 2, 9, 3)
sum_tuple = sum(tuple, 2000)
print(sum_tuple)
Output:
1065.8
2065.8
3. 숫자가 아닌 요소를 더할 때 발생하는 에러
리스트나 튜플에 숫자가 아닌 요소가 있을 때, sum()으로 합계를 계산하면 아래와 같은 에러가 발생합니다.
list = [10, 22.3, 19.5, 'a', 9, 3]
sum_list = sum(list, 1000)
print(sum_list)
Output:
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.7) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File "/home/mjs/IdeaProjects/python-ex/ex1.py", line 2, in <module>
sum_list = sum(list, 1000)
TypeError: unsupported operand type(s) for +: 'float' and 'str'