❗튜플은 불변 객체이다.
list처럼 원소를 append 하거나 remove하는게 불가능하다.
()를 이용하여 선언한다. 주의할 점은 원소가 1개인 튜플은 , 와 함께 선언해야한다.
1개를 그냥 (1)이런식으로 선언하면 원소의 타입인 int형으로 저장이 된다.
a = (1,)
b = (1,2)
원소를 빼거나 수정하는 작업은 할 수 없다.
a = (1,2)
b = (3,4)
print(a+b)
print(a*3)
# 출력결과
(1, 2, 3, 4)
(1, 2, 1, 2, 1, 2)
순서가 다르면 비교했을때 다르다고 나온다.
a = (1,2,3)
b = (3,2,1)
print(a==b)
# 출력결과
False
자유롭게 원소를 수정하지 못하는데 왜 사용하는 걸까?
일반적인 배열 list의 경우 가변객체로써 배열의 크기를 알 수 없어 실제로 사용하는 것보다 크게 잡히기도 하며 모자랄 경우 doubling이 필요한데 이 작업은 오버헤드가 크다.
이에 반해 튜플은 필요한 공간만큼만 할당하고 사용하기 때문에 메모리 공간을 아낄수 있다.
-> 불변객체인 경우 튜플로 선언하는 것이 리스트로 선언하는 것보다 시간, 공간적인 측면 모두에서 이점이 있다.