튜플이란?
튜플은 리스트와 비슷하지만 추가, 수정, 삭제가 되지 않는 읽기 전용 리스트라고 생각하면 된다.
튜플의 기본 사용
먼저 빈 튜플 생성하는 방법에 대해 알아보자.
빈 튜플은 소괄호 또는 tuple함수를 통해 생성할 수 있다.
# 빈 튜플 생성하기
tu1 = ()
tu2 = tuple()
print(tu1, type(tu1))
print(tu2, type(tu2))
() <class 'tuple'>
() <class 'tuple'>
요소가 하나인 리스트는 그냥 생성이 가능하지만 튜플은 그냥 생성하면 안 된다.
다음은 요소가 하나인 튜플을 생성하는 방법이다.
# 요소가 하나인 튜플 생성
tu1 = (1) # 잘못된 방법
tu2 = (1,) # 올바른 방법
print(tu1, type(tu1)) # 그냥 int형으로 생성됨
print(tu2, type(tu2)) # 올바르게 튜플이 생성됨
1 <class 'int'>
(1,) <class 'tuple'>
인덱싱과 슬라이싱
튜플은 추가, 수정, 삭제가 안될 뿐이지 인덱싱과 슬라이싱은 가능하다.
인덱싱과 슬라이싱에 대한 설명은 리스트에 했으니 리스트 글을 참고하면 된다.
05강. 리스트
리스트란?리스트는 한 번에 여러 값을 넣을 수 있는 파이썬의 자료형이다.추가, 수정, 삭제가 가능하고 인덱싱, 슬라이싱이 가능하는 특징이 있다. 리스트의 기본 사용먼저 빈 리스트를 생성하
c0de-log.tistory.com
그럼 튜플의 인덱싱과 슬라이싱은 예제만 간단히 보고 간단히 넘기겠다.
# 인덱싱
tu = tuple(range(10))
print(tu)
print(tu[0])
print(tu[4])
print(tu[8])
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
0
4
8
# 슬라이싱
tu = tuple(range(10))
print(tu)
print(tu[3:8:2])
print(tu[:8:2]) # 처음부터 시작이면 시작값 생략 가능
print(tu[3::2]) # 마지막 값이 끝값이면 마지막 값 생략 가능
print(tu[3:8]) # 스텝값이 1이면 생력가능
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
(3, 5, 7)
(0, 2, 4, 6)
(3, 5, 7, 9)
(3, 4, 5, 6, 7)
튜플의 함수들
튜플은 추가, 삭제가 불가능하므로 요소에 대한 함수들만 짚고 넘어가겠다.
또한 리스트에 설명한 함수이므로 설명 없이 예제만 보고 넘어간다.
# len() : 리스트 요소 개수 반환
tu = (1, 2, 3, 4, 5)
print(len(tu))
# sum() : 리스트 요소들의 합 반환
tu = (1, 2, 3, 4, 5)
print(sum(tu))
15
# index() : 특정 요소의 인덱스 번호 반환
tu = (1, 2, 3, 4, 5)
print(tu.index(3))
2
# count() : 특정 요소의 개수 반환
tu = (1, 1, 1, 3, 3)
print(tu.count(1))
print(tu.count(3))
3
2
# in : 튜플 요소들 중 특정값의 존재여부를 논리형으로 반환
tu = (1, 2, 3, 4, 5)
print(3 in tu)
print(6 in tu)
print(2 not in tu)
print(8 not in tu)
True
False
False
True
# max() : 요소 중 가장 큰 값을 반환
tu = (1, 2, 3, 4, 5)
print(max(tu))
5
# min() : 요소 중 가장 작은 값을 반환
tu = (1, 2, 3, 4, 5)
print(min(tu))
1
sorted함수는 정렬된 결과를 반환하는 함수이기에 수정이라고 볼 수 없으므로 튜플에서도 사용 가능하다.
하지만 결과는 리스트로 반환된다.
# sorted() : 요소를 크기 순서대로 정렬한다.
tu = (2, 1, 4, 8, 7)
print(sorted(tu))
# 괄호 안에 reverse = True로 설정하면 내림차순이 된다.
tu = (2, 1, 4, 8, 7)
print(sorted(tu, reverse = True))
[1, 2, 4, 7, 8]
패킹과 언패킹
튜플은 패킹과 언패킹을 할 수 있다.
패킹은 소괄호가 없어도 알아서 튜플 자료형으로 만들어주는 것이고 언패킹은 튜플 내 요소들을 각각의 변수에 할당해 주는 것이다.
# 패킹
tu = 1, 2, 3 # 소괄호가 업다.
print(tu, type(tu)) # 하지만 패킹으로 인해 자동으로 튜플로 묶어준다.
(1, 2, 3) <class 'tuple'>
# 언패킹
tu = (1, 2, 3)
a, b, c= tu # 요소의 개수에 맞게 변수를 써주면 순서에 맞게 할당된다.
print(a, b, c)
1 2 3
# 요소 개수와 변수 개수가 같지 않으면 에러가 발생한다.
ValueError: too many values to unpack (expected 2)
결론
튜플도 우회(리스트 컴프리헨션) 등을 통하여 추가, 삭제가 가능하다.
하지만 튜플의 주된 사용목적은 데이터의 불변성이므로 추가, 삭제를 할 데이터는 리스트를 사용하는 것이 좋다.
'Python > Foundation' 카테고리의 다른 글
08강. [Python]세트 (0) | 2025.02.02 |
---|---|
07강. [Python]딕셔너리 (0) | 2025.02.01 |
05강. [Python]리스트 (0) | 2025.02.01 |
04강. [Python]연산자 (0) | 2025.01.31 |
03강. [Python]자료형 (1) | 2025.01.31 |