[Python] 파이썬에서 튜플(Tuple) 다루기, 튜플 써야 할 때
- Language/Python
- 2020. 12. 23.
튜플(Tuple)이란 리스트와 동일하게 다양한 데이터를 집합형태로 저장을 한다. 하지만 리스트와 차이점이 하나 있는데 그건 바로 튜플은 한번 생성하면 변경을 할 수 없다는 것이다. 즉, 변경을 하는 부분(삽입, 삭제, 수정)을 제외한 나머지 처리는 리스트의 방식과 같다.
튜플 생성
>>> str_data = ('빅뱅','방탄소년단','블랙핑크','트와이스')
>>> type(str_data)
<class 'tuple'>
>>> str_data
('빅뱅', '방탄소년단', '블랙핑크', '트와이스')
리스트는 []를 사용해서 초기화를 할 수가 있었지만 튜플을 한번 생성을 하면 수정을 할 수 없기 때문에 초기화를 할 때 한번에 값을 넣는 것이 좋다.
튜플 인덱싱 및 슬라이싱
# 0번째 값을 불러온다
>>> str_data[0]
'빅뱅'
# 뒤에서 첫번째 값을 불러온다
>>> str_data[-1]
'트와이스'
# 모든 데이터를 불러온다
>>> str_data[:]
('빅뱅', '방탄소년단', '블랙핑크', '트와이스')
# 1번째 데이터와 마지막 데이터 앞까지 데이터를 불러온다
>>> str_data[1:-1]
('방탄소년단', '블랙핑크')
튜플의 값을 가져오는 방법과 슬라이싱 방식은 리스트와 완전히 동일하다. 이 자체의 행위가 값을 변형하지 않기 때문이다.
튜플 값 추가가 불가능한 경우
>>> str_data.append('엑소')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
튜플에 append는 존재하지 않고
>>> str_data.insert(1, '엑소')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'insert'
insert 역시 불가능하다. 즉 해당 튜플에는 값을 추가하는 것이 불가능하다는 의미이다.
튜플에 값 추가 방법
>>> str_data
('빅뱅', '방탄소년단', '블랙핑크', '트와이스')
# 튜플값에 새로운 튜플을 더하고, str_data에 다시 선언
>>> str_data = str_data + ('엑소', )
# 엑소가 추가된 것을 확인할 수 있다.
>>> str_data
('빅뱅', '방탄소년단', '블랙핑크', '트와이스', '엑소')
튜플에 값을 추가할 수 있는 방법이 없는 것만이 아니다. 기존 튜플에 +(더하기) 연산을 통하여 새로운 튜플을 합친 후 다시 원래의 튜플 변수에 더하면 append와 동일한 효과를 얻을 수 있게 된다. 튜플을 더할 때 값이 하나일 경우 꼭 쉼표(,)를 넣어줘서 튜플형임을 알려야 한다.
쉼표를 넣지 않는 데이터를 합칠 경우 아래와 같이 에러가 발생하게 된다.
>>> str_data = str_data + ('소녀시대')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple
튜플을 사용해야 할 때 (사용 이유)
리스트는 가변적(mutable)이고 튜플은 불변적(immutable)이다. 튜플이 가능한 것은 리스트가 모두 처리할 수 있기 때문에 사실상 개발을 할 때 튜플은 안써도 아무런 문제가 되진 않는다. 다만, 어떤 값을 저장하고 더이상 수정,삽입,삭제할 필요가 없다면 튜플을 사용하는 것이 시스템 상으로 더 좋다.
리스트는 가변적이어야 하기 때문에 튜플보다 더 많은 처리를 해야 한다. 튜플은 오로지 데이터를 초기에 생성한 후 가져오는 작업만 하지만 리스트는 수많은 처리를 해야 한다. 즉 처리량도 많고, 메모리도 더 많이 잡아먹는다는 의미이다. 매우 작은 데이터를 핸들링 할때에는 이러한 부분이 사실 무의미하겠지만, 대용량의 데이터를 처리하거나 여러명이 데이터를 같이 처리를 할때에는 리스트로 선언을 하는 것보다 아무래도 튜플이 더 안전적일 것이다.
연관포스팅
2020/12/23 - [Language/Python] - [Python] 파이썬에서 리스트 사용하기
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 함수(Function) 사용법, 메소드(Method)와 차이 (0) | 2020.12.26 |
---|---|
[Python] 파이썬에서 딕셔너리(Dictionary) 사용법 (0) | 2020.12.26 |
[Python] 파이썬에서 리스트 사용하기 (0) | 2020.12.23 |
[Python] 단일 값, 다중 값 입력받기 (input) (0) | 2020.12.19 |
[Python] 파이썬의 반복문 (while 문) (0) | 2020.12.19 |