파일 업로드

변수의 자료형 (튜플)

profile
실행 시간 제한메모리 제한
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
1,2,3,4,5
🖨️ 예제 출력 1
(1, 2, 3, 4, 5)
💻 예제 입력 2
2,3,1,6,2,3,5,2,1
🖨️ 예제 출력 2
(2, 3, 1, 6, 2, 3, 5, 2, 1)

출처: 돌핀 코딩