본문 바로가기
파이썬/통계분석

[파이썬 강의] 19. 자료구조 - 튜플

by 만다린망고 2021. 10. 7.
반응형

 

 

파이썬에서 기본적으로 제공하는 자료구조는 리스트, 튜플, 딕셔너리, 집합이 있습니다. 또 사람들이 파이썬을 더 편하게 쓰기위해 만들어낸 자료구조로 Array, Series, DataFrame 이 있습니다.

 

- 리스트

- 튜플

- 딕셔너리

- 집합

- Array (넘파이 패키지)

- Series (판다스 패키지)

- DataFrame (판다스 패키지)

 

오늘 배워볼 자료구조는 튜플(tuple) 입니다. 튜플은 리스트처럼 값들을 순서가 있게 나열해 놓은 것입니다. 리스트와의 차이는 아래와 같습니다.

"리스트는 원소를 수정할 수 있지만 튜플은 불가능함"

원소를 수정할 수 있다는 것을 mutable(가변), 변경할 수 없다는 것을 immutable(불변) 이라고 합니다. 수정이 불가능하다는 것을 제외하고는 리스트와 같습니다. 리스트의 성질을 가져와봅시다. 

1) 모든 자료형을 원소로 가질 수 있고 혼합하여 갖는 것도 가능함

2) 모든 자료구조를 원소로 가질 수 있고 혼합하여 갖는 것도 가능함

3) 인덱싱 및 슬라이싱 가능 (원소의 순서가 있음)

4) 인덱싱을 이용한 원소 수정이 가능함

5) 원소 삭제/추가가 가능함

6) 덧셈 연산이 가능함
7) 정수 곱셈 연산이 가능함


위 성질에서 4,5번만 제외하면 됩니다. 

튜플은 소괄호를 이용하여 정의합니다. 리스트는 대괄호를 이용하여 정의했었습니다 .

>>> a=(1,2,3)
>>> a
(1, 2, 3)


원소를 수정하려고 시도해보겠습니다. 첫번째 원소를 10으로 바꾸려고 해봅시다. 

>>> a[0]=10
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    a[0]=10
TypeError: 'tuple' object does not support item assignment


오류가 발생합니다. 

리스트가 있는데 튜플을 굳이 만들어 사용하는 이유가 뭘까요? 

튜플이 리스트보다 속도가 빠르고, 메모리를 적게 쓰긴 하지만 이것 때문에 튜플을 정의했을 것 같지는 않습니다. 튜플은 절대 바뀌면 안되는 값을 정의할 때 사용할 수 있습니다. 주민등록번호나 수험번호 같은 값들입니다. 인덱싱이나 이런저런 처리를 하다가 실수로 바뀌면 큰일나는 값들이죠. 

인덱싱과 슬라이싱의 원리는 리스트와 동일하니 다루지 않겠습니다. 

반응형

댓글