튜플(tuple)
튜플은 리스트와 아주 유사하지만, 내용을 변경할 수 없다는 점이 가장 큰 차이점이자 특징입니다. 그렇다면 왜 변경도 안되는 튜플을 사용하는 걸까요? 리스트는 변경이 가능합니다. 따라서 실수로 요소가 추가하거나 삭제되거나 변경될 위험이 있습니다. 따라서 변경되면 안되는 데이터는 튜플에 저장해 두는 것이 좋습니다. 또한, 튜플은 리스트에 비해 접근 속도가 빠릅니다. 그리고 튜플은 인덱스를 가지는 시퀀스 입니다. 따라서 인덱싱, 슬라이싱, 덧셈 연산, 곱셈 연산 와 같은 시퀀스 연산들이 적용 가능합니다.
- 튜플은 변경 불가능
- 변경되면 안되는 데이터를 저장하는 데에 유리함
- 리스트에 비해 접근 속도가 빠름
- 튜플은 인덱스를 가지는 시퀀스의 일종임
- 따라서 시퀀스 연산 가능: 인덱싱, 슬라이싱, 덧셈 연산, 곱셈 연산, 길이, 최댓값, 최솟값 등
튜플 값 저장
튜플에는 리스트와 마찬가지로 여러 가지 자료형의 값을 섞어서 생성할 수 있습니다. 또는 공백 튜플이나 값을 하나만 가지는 튜플도 생성할 수 있습니다. 이때, 값을 하나만 가지는 튜플의 경우 반드시 값 다음에 쉼표를 붙여야 합니다. 그렇지 않으면 단순한 하나의 숫자로 인식됩니다. 또는 리스트를 튜플로 변환할 수 있습니다. tuple() 함수는 list 내장함수와 같은 tuple 클래스의 내장 함수입니다. 그리고 리스트와 마찬가지로 내부에 다른 튜플을 가질 수 있습니다.
- 튜플은 여러가지 자료형을 섞어서 생성 가능
- 공백 튜플: t = ()
- 값을 하나만 가지는 튜플: t= (10,)
- 만약 t=(10)으로 입력하면, t는 튜플이 아닌 정수 10을 저장함.
- 리스트를 튜플로 변환: t = tuple([1, 2, 3, 4])
- 내부에 또 다른 튜플을 가질 수 있음
튜플 안에 있는 리스트
튜플 안에는 튜플도 포함할 수 있지만 리스트도 포함할 수 있습니다. 그렇다면, 튜플은 변경 불가능한 객체라고 했는데 튜플 안에 있는 리스트는 변경할 수 있을까요? 네. 튜플 안에 있는 리스트는 어쨌건 리스트 입니다. 변경이 가능합니다.
a = (1, 2, (3, 4), [5, 6])
print(a[3]) # [5, 6]
a[3].append(7)
print(a[3]) # [5, 6, 7]
print(a) # (1, 2, (3, 4), [5, 6, 7])
두 개 튜플 합치기
두 개의 튜플을 합쳐서 튜플을 만들 수 있습니다. 그러나 이 때는 합쳐진 두 튜플이 변경되는 것이 아니라, 두 튜플이 합쳐진 '새로운 튜플'이 생성되는 것입니다.
괄호 없는 튜플
튜플은 기본적으로 괄호를 사용해 생성하지만, 괄호 없이 나열된 객체들은 리스트나 다른 형태가 아닌 기본적으로 튜플로 간주됩니다.
튜플 대입 연산
튜플에 있는 값을 순서대로 꺼내서 각각의 변수에 대입할 수 있습니다.
score = ('math', 90, 'A-')
sub, get, grade = score
print(sub)
print(get)
print(grade)
'''
>>>math
>>>90
>>>A-
'''
튜플의 패킹과 언패킹
- 패킹(packing): 튜플에 값을 저장하는 가정
- 언패킹(unpacking): 튜플에서 값을 꺼내서 다른 변수에 대입하는 과정
- 언패킹 시, 튜플의 원소와 대입하는 변수의 개수는 일치해야 함.
'Python' 카테고리의 다른 글
[Python] 자료 구조 - 문자열(string) (1) | 2023.10.31 |
---|---|
[Python] 자료 구조 - 딕셔너리(dictionary) (0) | 2023.10.31 |
[Python] 자료구조 - 스택(stack), 큐(queue) (0) | 2023.10.29 |
[Python] 파이썬 자료구조 종류 (0) | 2023.10.29 |
[Python] 2차원 리스트 (1) | 2023.10.22 |