본문 바로가기

프로그래밍/Python

파이썬 강좌 14 :: 튜플(tuple)

14. 튜플tuple



튜플은 리스트 자료형과 같은 '순서있는 배열'이며 원소의 값을 변경할 수 없는 구조로 되어있습니다. 튜플을 생성하는 방법은 다음과 같습니다.



튜플 객체 생성하기


튜플 객체를 생성하는 방법은 다음과 같이 다양합니다.


>>> t = (3,)    # create tuple 1

>>> t = 3,5,7   # create tuple 2

>>> t = tuple(range(10))    # create tuple 3

>>> type(t)

<class 'tuple'>

>>>


튜플의 핵심은 콤마 , 입니다. 객체들을 콤마로 구분해주면 튜플 객체가 생성된다는 점을 기억해두시기 바랍니다.



값 변경 불가능한 튜플


튜플은 각 원소의 값을 변경할 수 없습니다. 변경을 시도할 경우 다음과 같이 에러가 발생합니다.


>>> x = ( 1, 2, 3 )

>>> x[1] = 2

Traceback (most recent call last):

  File "<pyshell#2>", line 1, in <module>

    x[1] = 2

TypeError: 'tuple' object does not support item assignment

>>>


튜플은 원소의 접근속도가 리스트에 비해 빠른대신에 값을 변경할 수 없다는 단점을 가지고 있습니다. 이러한 성격때문에 튜플은 변할 가능성이 적은 데이터들을 저장할 때 자주 사용됩니다. 예를 들어 각 나라들의 이름을 저장할 때 리스트보다는 튜플을 사용하는 편이 좋습니다. 나라들의 이름은 쉽게 변동되지 않기 때문입니다.



튜플의 기본적인 연산


튜플은 순열이기 때문에 순열 연산을 수행할 수 있습니다.


 >>> t1 = (1, 2, 3)

 >>> t2 = (4, 5, 6)

 >>> t1 + t2    # 덧셈

 (1, 2, 3, 4, 5, 6)

 >>> t1 * 2    # 곱셈

 (1, 2, 3, 1, 2, 3)

 >>> t[1:2]    # 슬라이싱

 (2, 3)

 >>> t[0:2:2]

 (3, )




튜플의 메서드


튜플은 값을 변경할 수없는 타입(immutable class)입니다. 따라서 list자료형에서 사용할 수 있었던 append,extend,insert같은 수정 메서드는 튜플에서 사용할 수 없습니다. 튜플은 다음과 같은 간단한 메서드만 존재합니다.


count(value)

:해당 튜플객체에 해당 value가 몇개있는지에 대한 값을 반환합니다.


>>> t = 'a','p','p','l','e'

>>> t.count('p')

2



index(value,offset=1)

:튜플의 offset부터 끝까지 value를 검사하고 인덱스번호를 반환합니다.


>>> t = (1, 2, 3, 4, 5, 6, 7, 2)

>>> t.index(2)

1

>>> t.index(2,3)

7