실행 시간 제한 | 메모리 제한 |
---|---|
1 초 | 10 MB |
튜플(Tuple)은 유한한 원소가 순서를 가진 열거에요
앞에서 배운 리스트는 [ ]으로 둘러싸지만, 튜플은 ( )으로 둘러쌓아 표현합니다.
특히 튜플은 리스트와는 다르게 원소의 추가, 삭제, 수정을 하지 못합니다.
즉 한번 변수를 할당하면, 그 뒤로는 변형될 수 없고 읽기만 가능한데요.
# 자료형 명시하기
x:tuple = (1,2,'삼', 4.0, "오")
# 자료형 생략하기
x = (1,2,'삼', 4.0, "오")
# 4번째(index 3) 값 출력하기
print(x[3])
이렇게 튜플을 선언할 수 있고 튜플 자료형의 예약어는 'tuple' 입니다.
한번 리스트와 비교하기 위해 4번째 위치에 있는 값을 바꿔볼게요
x = (1,2,'삼', 4.0, "오")
x[3] = 7 ## 여기서 4번째에 있는 값을 한번 바꿔보겠습니다.
Traceback (most recent call last):
File "/app/main.py", line 5, in
x[3] = 7
TypeError: 'tuple' object does not support item assignment
이 에러가 의미하는 바는, tuple 은 item 에 대한 assignment 를 지원하지 않는다고 적혀있죠?
그럼 tuple 은 값을 바꿀 수 없고 리스트는 바꿀 수 있는 데, 왜 굳이 튜플이란걸 만들었을까요?
그 이유는 튜플이 리스트보다 빠르기 때문입니다.
물론 튜플은 값을 바꿀 수가 없기 때문에 값을 수시로 바꿔야 하는 상황에서는 '리스트'가 더 나은 선택이겠죠?
값을 바꾸지 않는 상황이라면 '튜플'을 사용하는 것이 더 나은 선택이 됩니다.
왜 그럴까요?
튜플은 불변이기 때문에 새로운 객체를 추가하기 위한 공간이 필요하지 않습니다.
튜플은 단일 블록으로 생성 할 수 있는 반면에, 리스트는 새로운 객체를 추가하기 위한 추가 공간 블록을 사용합니다.
즉 튜플은 블록을 1개 사용하고 리스트는 2개 사용하게 됩니다.
indexing도 살짝 빠른데, 그 이유는 포인터를 더 적게 사용하기 때문이라고 해요.
(출처 : https://learnbatta.com/blog/why-tuple-is-faster-than-list-in-python-22/)
# 아래의 리스트 변수를 tuple 자료형으로 바꾸려면 어떻게 해야할까요?
elements = [1,2,3,4,5,6,7,8]
# 아래처럼 tuple() 함수를 사용하면, 불변 자료형 '튜플' 로 변환 할 수 있어요!
tuple_elements = tuple(elements)
print(tuple_elements)
이제 실습해볼까요?
실습 문제
임의로 주어지는 리스트를 튜플로 변환하여 출력하세요.
임의의 리스트가 주어집니다.
입력 리스트에 대해 튜플로 변환된 값을 출력합니다.
1,2,3,4,5
(1, 2, 3, 4, 5)
2,3,1,6,2,3,5,2,1
(2, 3, 1, 6, 2, 3, 5, 2, 1)
출처: 돌핀 코딩