🔍QA & TEST/🧑🏻‍💻Python

[Python] 자료형 : 튜플(Tuple)

siwoobyeol 2024. 7. 14. 18:30

튜플(Tuple)

튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며, 다른 점은 아래와 같다.

  • 리스트는 [], 튜플은 ()으로 둘러싼다.
  • 리스트는 요솟값의 생성, 삭제, 수정이 가능하지만, 튜플은 요솟값을 바꿀 수 없다.

튜플은 어떻게 만들까?

t1 = ()
t2 = (1,) # 단지 1개의 요소만을 가질 때는 요소 뒤에 쉼표(,)를 반드시 붙여햐 한다.
t3 = (1, 2, 3)
t4 = 1, 2, 3 # () 소괄호를 생략해도 된다는 점이다.
t5 = ('a', 'b', ('ab', 'cd'))

얼핏 보면 튜플과 리스트는 비슷한 역할을 하지만,

프로그래밍을 할 때 튜플과 리스트는 구별해서 사용하는 것이 유리하다.

튜플과 리스트의 가장 큰 차이는 요솟값을 변화시킬 수 있는지의 여부이다.

즉, 리스트의 요솟값은 변화가 가능하고, 튜플의 요솟값은 변화가 불가능하다.

따라서 프로그램이 실행되는 동안 요솟값이 항상 변하지 않기를 바란다거나 값이 바뀔까 걱정하고 싶지 않다면

주저하지 말고 튜플을 사용해야 한다.

이와 반대로 수시로 그 값을 변화시켜야할 경우라면 리스트를 사용해야 한다.

실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 많기 때문에 평균적으로 튜플보다 리스트를 더 많이 사용한다.

 

튜플의 요솟값을 지우거나 변경하려고 하면 어떻게 될까?

1. 튜플의 요솟값을 삭제하려 할 때

아래는 리스트처럼 del함수로 지우려고 한 예시이다.

튜플은 요솟값을 지울 수 없다는 오류 메시지를 확인할 수 있다.

>>> t1 = (1, 2, 'a', 'b')
>>> del t1[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion

 

2. 튜플의 요솟값을 변경하려 할 때

튜플의 요솟값을 변경하려고 해도 오류가 발생하는 것을 확인할 수 있다.

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0] = 'c'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

튜플 다루기

인덱싱하기

문자열, 리스트와 마찬가지로 t[0], t1[3]처럼 인덱싱이 가능하다.

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
>>> t1[3]
'b'

슬라이싱하기

t1[1]부터 튜플의 마지막 요소까지 슬라이싱 하는 예

>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')

튜플 더하기

튜플을 더하는 방법을 보여 주는 예

이때도 t1, t2 튜플의 요솟값이 바뀌는 것은 아니다

다만, t1, t2 튜플을 더하여 새로운 튜플 t3를 생성한 것이다.

>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t3 = t1 + t2
>>> t3
(1, 2, 'a', 'b', 3, 4)

튜플 곱하기

튜플의 곱하기(반복) 

>>> t2 = (3, 4)
>>> t3 = t2 * 3
>>> t3
(3, 4, 3, 4, 3, 4)

튜플 길이 구하기

튜플의 길이를 구하는 

>>> t1 = (1, 2, 'a', 'b')
>>> len(t1)
4
튜플은 요솟값을 변경할 수 없기 때문에 sort, insert, remove, pop과 같은 내장 함수가 없다.

 

출처 : https://wikidocs.net/15