튜플이란?
튜플은 상수 리스트이다.
튜플은 많은 기능에서 리스트와 비슷하지만, 딱 한 가지 중요한 특징이 있습니다. 일단 튜플을 선언한 후에는 튜플의 값을 절대로 수정할 수 없습니다. 그래서 튜플은 상수 리스트라고 불립니다. (반면 리스트는 값을 수정할 수 있습니다.)
튜플은 어디에 활용하는가?
'값을 수정할 수 없는데 왜 사용하지?'라는 생각이 들 수 있습니다. 그러나 튜플은 생각보다 꽤 많이 사용됩니다. 우선 고유 값을 표현하는 데 사용할 수 있습니다. 예를 들면 사람의 주민등록번호 같은 경우입니다.
그리고 어떠한 연산이나 함수의 결과가 종종 튜플의 형태로 반환되기도 합니다. 최종 결과가 전달 과정에서 영향을 받으면 안 되니까요. (반환된 결과를 각각의 변수에 Unpacking)
튜플 실습
튜플 선언하기
튜플은 소괄호로 선언합니다.
# tuple
tuple_a = (1,2,3)
print(type(tuple_a))
>>>>> 실행 결과: <class 'tuple'>
공백 튜플 선언하기
코딩 테스트를 준비하시는 경우, 공백의 튜플을 선언해야 하는 경우가 꽤 있습니다.
# 공백 tuple
tuple_a = ()
tuple_b = tuple()
튜플은 값을 바꿀 수 없다.
튜플의 값을 수정하려고 하면 아래와 같은 "TypeError"가 발생합니다.
# tuple
tuple_a = (1,2,3)
tuple_a[0] = 9999
--------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-60-f952456eaa0a> in <module>
2
3 tuple_a = (1,2,3)
----> 4 tuple_a[0] = 9999
TypeError: 'tuple' object does not support item assignment → 튜플은 수정할 수 없다.
꼭 튜플의 값을 바꿔야 한다면?
튜플은 애초에 값을 수정할 수 없도록 만든 자료형입니다. 따라서 튜플 자료형은 값을 수정하거나 추가하거나 제거할 수 없습니다.
그럼에도 굳이 값을 수정해야 하는 경우에는 보통 다른 컬렉션 자료형으로 형 변환하여 값을 수정하고 다시 튜플로 변경하는 방식을 사용합니다.
tuple_a = (1,2,3,4)
temp_list = list(tuple_a) # list로 형 변환
temp_list[0] = 9999
tuple_a = tuple(temp_list) # tuple로 형 변환
print(tuple_a)
>>>>> 실행 결과: (9999, 2, 3, 4)
튜플의 인덱싱과 슬라이싱
튜플의 인덱싱과 슬라이싱은 리스트와 동일합니다.
# 인덱싱
tuple_a = (1,2,3,4,5,6,7,8,9,10)
print(tuple_a[2], tuple_a[7], tuple_a[-4])
>>>> 실행 결과: 3, 8, 7
# 슬라이싱
tuple_a = (1,2,3,4,5,6,7,8,9,10)
print(tuple_a[2:5], tuple_a[-1:-5:-1], tuple_a[1:-3:2])
>>>>> 실행 결과: (3, 4, 5) (10, 9, 8, 7) (2, 4, 6)
튜플의 연산
튜플의 값을 바꾸는 것은 안되지만, 서로 다른 튜플을 연산하여 새로운 튜플을 만드는 것은 가능합니다. 리스트나 문자열처럼 튜플도 덧셈과 곱셈 연산을 지원합니다.
튜플의 덧셈 연산: 튜플 합치기
# 덧셈 연산
tuple_a = (1,2,3,4,5)
tuple_b = (6,7,8,9,10)
tuple_a + tuple_b
>>>>> 실행 결과: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
튜플의 곱셈 연산: 정수배 반복
# 곱셈 연산
tuple_a = (1,2,3,4,5)
tuple_a * 3
>>>>> 실행 결과: (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
리스트에 대해서도 알아보세요.
파이썬 리스트 집중 해부 1편: 정의부터 인덱싱과 슬라이싱까지
파이썬 리스트 집중 해부 2편: 리스트 기초 연산과 값 수정, 추가, 삭제
파이썬 리스트 집중 해부 3편: 유용한 리스트 관련 메서드 정리
'Python > 기초' 카테고리의 다른 글
파이썬 셋(Set) 자료형, 이 글 하나로 정리 (0) | 2023.08.22 |
---|---|
파이썬 셋, 딕셔너리: hashtable 구조에 대하여 (0) | 2023.08.21 |
파이썬 리스트 집중 해부 3편: 유용한 리스트 관련 메서드 정리 (0) | 2023.08.19 |
파이썬 리스트 집중 해부 1편: 정의부터 인덱싱과 슬라이싱까지 (0) | 2023.08.17 |
파이썬 문자열 포매팅 4가지 한 글로 정리하기 (0) | 2023.08.16 |
댓글