파이썬 리스트 더하기 - paisseon liseuteu deohagi

sum()은 Iterable인 list, tuple, dictionary의 합을 리턴하는 함수입니다. 숫자만 가능하며, 숫자가 아닌 객체가 있을 때 TypeError가 발생합니다.

1. sum(iterable)

sum(iterable)은 인자로 전달되는 iterable의 합을 리턴합니다.

아래 예제에서 sum(list)는 list의 합을 리턴합니다.

list = [10, 22, 19, 2, 9, 3]
sum_list = sum(list)

print(sum_list)

Output:

2. sum(iterable, start)

sum(iterable)은 인자로 전달되는 iterable의 합과 start를 더한 값을 리턴합니다.

list = [10, 22, 19, 2, 9, 3]
sum_list = sum(list, 1000)

print(sum_list)

Output:

3. tuple, dictionary에 대한 sum()

tuple 또는 dictionary도 iterable이기 때문에, sum()을 사용할 수 있습니다.

다음은 Tuple에 sum()을 사용한 예제입니다.

tuple = (10, 22, 19, 2, 9, 3)
sum_tuple = sum(tuple)

print(sum_tuple)

Output:

다음은 dict에 sum()을 사용한 예제입니다.

dict = {'a': 1, 'b': 2, 'c': 3}
sum_dict = sum(dict.values())
print(sum_dict)

Output:

4. TypeError

sum()으로 전달된 Iterable에 숫자가 아닌 객체가 있을 때 TypeError가 발생합니다.

list = [10, 22, 'a', 2, 9, 3]
sum_list = sum(list)

Output:

Traceback (most recent call last):
  File "/home/js/IdeaProjects/python-examples/inttostr.py", line 58, in <module>
    sum_list = sum(list)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

  • Python - Counter로 Collection 개수 세기
  • Python - assert 사용 방법
  • Python - 줄바꿈 입력 방법
  • Python - join() 함수, 문자열 합치기
  • Python - count(), len() 함수
  • Python - enumerate(), for/index 예제
  • Python - 딕셔너리 CSV 파일 쓰기/읽기
  • Python - 딕셔너리 Index로 접근/순회 방법
  • Python - 딕셔너리 update() 함수
  • Python - CSV 파일을 JSON 파일로 변환
  • Python - CSV 파일을 리스트로 변환
  • Python - JSON을 딕셔너리로 변환
  • Python - 딕셔너리를 JSON으로 변환
  • Python - JSON 예쁘게(pretty), 정렬하여 출력
  • Python - Set을 List로 변환
  • Python - List를 Set로 변환
  • Python - 파일 수정 시간, 생성 시간 확인
  • Python - 다른 파일의 변수 참조, 함수 호출
  • Python - 텍스트 파일 이어서 쓰기
  • Python - 파일 끝 찾기
  • Python - print() 줄바꿈 없이 출력

codechachaCopyright ©2019 codechacha

파이썬 리스트 더하기 - paisseon liseuteu deohagi

저는 해당 책으로 파이썬 기초를 꾸준히 공부 중이며, 마지막 연습문제 파트를 풀면서 부족한 부분 개념을 정리하면서 해당 책으로의 공부를 마무리에 도전합니다!😣


Q3 리스트의 더하기와 extend 함수

파이썬 리스트 더하기 - paisseon liseuteu deohagi

해당 문제는 리스트 a에 + 기호를 사용하여 더한 결과와 extend 함수를 사용하여 더한 결과의 차이를 묻고 있습니다.

+, extend 차이

a = [1, 2, 3]
a = a + [4,5]
print(a)
# [1, 2, 3, 4, 5]

a = [1, 2, 3]
a.extend([4,5])
print(a)
# [1, 2, 3, 4, 5]

차이점

  • +를 사용하면 리스트 a의 값이 변하는 것이 아니라 두 리스트가 더해진 새로운 리스트가 반환된다.

  • extend를 사용하면 리스트 a의 주소 값이 변하지 않고 유지됨

코드로 두 차이를 다시 살펴보겠습니다.


b = [1,2,3]
print('original id:', id(b))
b = b + [[4,5]]
print('b:', b)
print('+ id:', id(b))

해당 코드 실행시, 결괏값으로

original id: 2359106440768
b: [1, 2, 3, [4, 5]]
+ id: 2359106439872

이 나옵니다. 원래 id와 +를 사용 후 리스트의 id가 변경되었습니다!


b = [1,2,3]
print('original id:', id(b))
b.extend([4,5])
print('b:',b)
print('extend id:', id(b))

해당 코드 실행시, 결괏값으로

original id: 2359106440768
b: [1, 2, 3, 4, 5]
extend id: 2359106440768

extend를 사용했을 때, id 값이 같은 것을 알 수 있습니다.


b = [1,2,3]
print('original id:', id(b))
b.append([4,5])
print('b:',b)
print('append id:', id(b))

해당 코드 실행시, 결괏값으로

original id: 2359106439872
b: [1, 2, 3, [4, 5]]
append id: 2359106439872

append를 사용했을 때, extend와 마찬가지로 id 값은 변경되지 않습니다. 즉, extend/append새로운 리스트를 반환하지 않고 원래의 리스트에 값이 추가된다는 것을 알 수 있습니다.

근데 결괏값에는 차이가 살짝 있습니다.

b: [1, 2, 3, 4, 5]

b: [1, 2, 3, [4, 5]]

이 두 차이에 대해 더 알아보겠습니다.


extend, append 함수의 차이

  • append는 매개변수 그 자체를 원소로 넣음

  • extend는 가장 바깥쪽 iterable을 넣음

다시 쉽게 설명하면 append는 매개변수로 받는 원소 그대로의 값을 리스트 안으로 집어넣습니다. extend는 가장 바깥쪽 iterable의 모든 항목을 넣습니다.

해당 코드로 다시 살펴 보겠습니다.

x = [1,2,3]
y = 'ping'
x.append(y)
print('append:',x)

x = [1,2,3]
y = 'ping'
x.extend(y)
print('extend:',x)
append: [1, 2, 3, 'ping']
extend: [1, 2, 3, 'p', 'i', 'n', 'g']

두 결괏값을 비교해보면 append는 'ping' 문자열 자체를 그대로 삽입하였고, extend는 가장 iterable한 바깥쪽의 모든 항목을 리스트 내로 삽입합니다.

쉽게 설명하면 가장 바깥쪽의 껍데기를 하나씩 리스트 내로 삽입한다고 생각하면 됩니다!

여기까지 리스트에 +를 사용할 경우, extend, append 함수를 사용한 경우를 살펴보았습니다!