튜플 자료형

honeyricecake·2022년 6월 26일
0

파이썬

목록 보기
3/26
  1. 튜플은 어떻게 만들까?

튜플은 몇가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.

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

튜플의 모습은 다음과 같다.

t1 = ()
t2 = (1,)
t3 = (1, 2, 3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))

리스트와 모습은 거의 비슷하지만 튜플에서는 리스트와 다른 2가지 차이점을 찾아볼 수 있다. t2 = (1,)처럼 단지 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 한다는 것과 t4 = 1,2,3 처럼 괄호를 생략해도 무방하다는 점이다.

얼핏 보면 튜플과 리스트는 비슷한 역할을 하지만 프로그래밍을 할 때 튜플과 리스트는 구별해서 사용하는 것이 유리하다.
튜플과 리스트의 가장 큰 차이는 값을 변화시킬 수 있는가 여부이다.
즉, 리스트의 항목 값은 변화가 가능하고 튜플의 항목 값은 변화가 불가능하다.

따라서 프로그램이 실행되는 동안 그 값이 항상 변하지 않기를 바란다거나 값이 바뀔까 걱정하고 싶지 않다면 주저하지 말고 튜플을 사용해야 한다.
이와는 반대로 수시로 그 값을 변화시켜야 할 경우라면 리스트를 사용해야 한다.

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

튜플의 요소값을 지우거나 변경하려고 하면?

앞에서 설명하였듯이 튜플의 요솟값은 한번 정하면 지우거나 변경할 수 없다.
다음에 소개하는 두 예를 살펴보면 무슨 말인지 알 수 있을 것이다.

  1. 튜플 요솟값을 삭제하려 할 때
t1 = (1 , 2, 'a', 'b')
del t1[0]

TypeError: 'tuple' object doesn't support item deletion 라는 에러 메시지가 출력된다.

이 의미는 튜플 객체는 항목의 삭제를 지원하지 않는다는 뜻이다.

  1. 튜플 요솟값을 변경하려 할 때
t1 = (1,2,'a','b')
t1[0] = 'c'

TypeError: 'tuple' object does not support item assignment 라는 에러 메시지가 출력되는 것을 볼 수 있다.

이 메시지의 의미는 튜플 객체는 항목 등록을 지원하지 않는다는 것으로 튜플의 어떤 index에 항목을 추가 또는 변경이 불가능하다는 것을 의미한다.

t1 = (1,2,'a','b')
t1[4] = 'c'

이를 실행해도 같은 에러 메시지가 출력되는 것을 볼 수 있다.

  1. 튜플 다루기

튜플은 값을 변화시킬 수 없다는 점만 제외하면 리스트와 완전히 동일하므로 간단하게만 살펴보겠다.

  1. 인덱싱하기 (인덱스를 이용해 O(1)로 탐색하기)
t1 = (1,2,'a','b')
print(t1[2])

a가 출력되는 것을 볼 수 있다.
튜플 역시 범위를 벗어나는 인덱싱을 하면 out of range 에러가 출력되는 것을 볼 수 있다.

  1. 슬라이싱하기
t1 = (1,2,'a','b','c')
print(t1[1:3])

결과:

(Tip. 슬라이싱은 제자리 함수가 아니므로 튜플을 리턴함을 알 수 있다.)

  1. 튜플 더하기
t1 = (1,2,3)
t2 = (4,5,6)

print(t1 + t2)

t3 = t1+t2
print(t3)

del t3[2]
print(t3)

이 결과를 통해 튜플의 더하기가 가능하다는 것과 튜플을 더하면 튜플이 리턴되어 튜플을 더하여 얻은 튜플에서 요소의 삭제가 불가능하다는 것을 알 수 있다.

  1. 튜플 곱하기
t2 = (1,2,3)
print(t2 * 3)

(1,2,3,1,2,3,1,2,3)이 출력됨을 볼 수 있다.

  1. 튜플 길이 구하기
t2 = (1,2,3)
print(len(t2))

3이 출력된다.

0개의 댓글