파이썬 독학/입문 강의

[파이썬독학강의] 7. 파이썬 튜플(Tuple) 자료형

데니 by danny 2023. 2. 20. 22:47
반응형

파이썬 튜플(Tuple)
파이썬 튜플(Tuple)

 

님들 안녕하세요. 14년차 IT 개발자 데니예요. 지난 시간 파이썬 자료형 중 리스트(List)를 학습해 보았어요.  이번 시간에는 리스트 자료형과 매우 유사하지만, 조금 다른 특성을 지닌 튜플(Tuple) 자료형을 배워볼 거예요. 님들은 이미 리스트(List)를 학습하셨으므로 튜플을 익히시는데 큰 어려움이 없을 테니, 부담 갖지 말고 강의 따라오시면 됩니다. 자 이제 강의 시작해 볼게요.

 

 

7. 파이썬 튜플(Tuple) 자료형

 

  ▶ 튜플(Tuple)이란?

튜플(Tuple)은 하나의 변수여러 개의 값목록형태로 관리하는 자료형이에요. 여기까지는 지난 시간에 배운 리스트의 개념과 동일해요. 차이점을 말씀드리면 튜플 생성 방식은 대괄호 []가 아닌 소괄호 ()를 사용해요.  리스트는 요소 값을 추가/수정/삭제할 수 있었으나, 튜플은 요소 값에 대한 추가/수정/삭제가 모두 불가능해요. 아래 그림을 보면서 설명드릴게요. 라인[1]은 튜플 생성 시에 요소 값을 1개만 갖더라도 요소 뒤에 콤마 , 를 꼭 붙이셔야 해요. 라인[2]는 가장 일반적인 튜플 생성 방식이에요. 라인[3]은 튜플은 괄호를 생략하고 생성할 수 있어요. 리스트는 반드시 대괄호 []를 사용하셔야 하니, 튜플만 괄호 생략할 수 있다는 점 헷갈리시면 안 돼요. 라인[4]는 튜플 내 요소 값으로 튜플을 가지는 중첩 구조의 튜플을 생성했어요. 이 부분도 리스트와 동일해요. 리스트도 중첩 리스트를 생성할 수 있었어요.

 

튜플(Tuple) 생성 방법
튜플(Tuple) 생성 방법

 

 

  ▶ 튜플의 가장 큰 특징

튜플은 튜플 내 요소 값을 삭제/추가/변경할 수 없어요.  즉, 튜플은 생성하고 나면  요소 값에 대한 변경이 불가능해요. 이 점이 튜플의 가장은 큰 특징이자 리스트와의 차이점이에요. 그렇다면 왜 요소 값을 변경하지도 못하는 불편한 튜플이 파이썬 자료형으로 존재하는 것일까요? 첫 번째로 튜플은 리스트보다 메모리 용량을 덜 차지하여 메모리를 아낄 수 있어요. 두 번째로 튜플은 리스트처럼 요소 값을 변경하지 못하므로 요소 값 조작에 필요한 내부 절차들 생략되어 리스트보다 처리 수행 동작이 가벼워서 프로그램 퍼포먼스를 향상하는데 도움이 돼요. 세 번째로 고정된 값이나 문자열을 사용하여 누군가에 의해서 그 값이 변경되지 않도록 로직을 구현해야 할 때가 있어요. 그럴 때 튜플을 사용하면 값이 변경될 가능성이 없기 때문에 프로그램 오류를 예방할 수 있어요. 그럼 실제로 튜플 요소 값이 변경되는지 안되는지 실습을 통해서 확인해 볼게요.

 

아래 실습 예제는 튜플 내 요소 값을 삭제시킬 때 발생하는 타입 오류예요.

1
2
3
4
5
6
>>> tup5 = (123)
>>> del tup5[0]
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
TypeError: 'tuple' object doesn't support item deletion
>>>
cs

라인[1]은 튜플을 생성해서 변수에 대입했어요.

라인[2]는 튜플 내 첫 번째 요소 값을 삭제하고자 해요.

라인[3]~[5]는 튜플을 요소 값 삭제를 할 수 없다는 타입 오류가 발생했어요.

 

 

아래 실습 예제는 튜플 내 요소 값을 변경시킬 때 발생하는 타입 오류예요.

1
2
3
4
5
6
>>> tup6 = (123)
>>> tup6[0= 9
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
TypeError: 'tuple' object does not support item assignment
>>>
cs

라인[1]은 튜플을 생성해서 변수에 대입했어요.

라인[2]는 튜플 내 첫 번째 요소 값을 9로 변경하려고 해요.

라인[3]~[5]는 튜플은 요소 값을 변경할 수 없다는 타입 오류를 발생했어요.

 

 

  ▶ 튜플 인덱싱(Indexing)과 슬라이싱(Slicing)

튜플도 시퀀스(Sequence) 자료형에 속하기 때문에 튜플 생성 시에 순번이 자동으로 매겨져요. 순번을 가지고 있다는 건 인덱싱과 슬라이싱이 가능하다는 의미예요. 실습을 통해 확인해 볼게요.

 

1
2
3
4
5
6
7
8
>>> tup7 = (123'a''b''c')
>>> tup7[0]
1
>>> tup7[3]
'a'
>>> tup7[2:5]
(3'a''b')
>>>
cs

라인[1]은 튜플을 생성하여 변수에 대입했어요.

라인[2]~[3]는 인덱싱을 하여 튜플 내 첫 번째 순번인 요소 값에 접근하여 숫자 1이 출력되었어요.

라인[4]~[5]는 인덱싱을 하여 튜플 내 네 번째 순번인 요소 값에 접근하여 문자 a가 출력되었어요.

라인[6]~[7]은 슬라이싱을 하여 튜플 내 세 번째부터 다섯 번째까지 요소 값들에 접근하여 3, 'a', 'b'가 출력되었어요.

 

 

  ▶ 튜플과 리스트 비교

님들께서 지난 시간에 리스트를 이번 시간에 튜플을 배우셨지만, 조금 시간이 지나고 나서 2가지 자료형에 대해 헷갈리시거나 기억이 나지 않으실 수도 있으실 거 같아서 튜플과 리스트에 대한 비교를 한눈에 볼 수 있도록 표로 정리해 봤어요. 혹시 나중에 기억이 나지 않으시거나 헷갈리시면 해당 포스팅 다시 찾아주셔서 아래 비교표 보시고 다시 한번 복습해 주시면 감사하겠어요.

 

파이썬 튜플과 리스트 비교

 

 

님들 오늘은 파이썬 자료형 튜플(Tuple)을 살펴보았어요. 오늘도 너무 고생하셨어요. 님들 파이썬 마스터하시고자 하시는 마음 굳게 가지시고 앞으로도 제 블로그 자주 방문하셔서 알찬 시간 보내고 가시길 바랄게요. 감사해요.

반응형