지난 시간에 파이썬 자료형 중 파이썬 리스트의 연산에 대해 공부해봤습니다
이번엔 다음 단계인 파이썬 튜플 자료형에 대해 공부해보겠습니다
파이썬 튜플 자료형
파이썬 튜플 만들기
튜플(tuple)은 이전에 공부했던 리스트 와 거의 흡사하지만 다른점도 있습니다.
리스트는 [ ] 으로 요소를 둘러싸지만 튜플은 ( ) 로 둘러쌉니다.
그리고 리스트는 요소값에 대해서 생성이나 삭제, 수정이 가능하지만 튜플은 요소값을 바꿀수가 없습니다.
>>> a1 = ()
>>> a2 = (2,)
>>> a3 = (2 ,4, 6)
>>> a4 = 2, 4, 6
>>> a5 = ('p', 'y', ('th', 'on'))
리스트 자료형과 둘러싸는 괄호만 다른 모습을 볼수 있는데 튜플 a2의 경우 처럼 요소가 1개만이라면 요소 뒤에 콤마(,)를 반드시 붙여야 합니다.
그리고 a4처럼 괄호를 생략해도 된다는 차이가 있습니다.
앞서 말씀드린대로 리스트와 튜플은 요소값에 대해서 생성, 삭제, 수정이 되느냐 안되느냐 하는 큰 차이점이 있습니다.
만약 프로그래밍을 할때 절대로 바뀌면 안되는 값이 있다면 리스트 대신 튜플을 사용해 주면 됩니다.
튜플 요소 삭제, 수정을 시도했을때
튜플의 요소는 변경하거나 지울수 없습니다.
튜플 요소값을 삭제하려 했을때
>>> a1 = (2, 4, 'p', 'y')
>>> del a1[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> del a1(0)
File "<stdin>", line 1
del a1(0)
^^^^^
SyntaxError: cannot delete function call
튜플 a1 의 0번째 주소에 있는 요소를 리스트 처럼 del 을 이용해 지우려 하면 튜플에서는 항목 삭제를 지원하지 않는다는 오류가 발생합니다.
그래서 튜플 a1 을 튜플 표시형식대로 해서 del 을 해보면 del 함수를 사용할 수 없다고 나옵니다.
튜플 다루기
튜플 인덱싱
>>> a1 = (2, 4, 'p', 'y')
>>> a1[0]
2
>>> a1[3]
'y'
위처럼 튜플의 선언은 괄호로 하지만 인덱싱은 리스트와 마찬가지로 [ ] 로 진행합니다.
튜플 슬라이싱
>>> a1[1:]
(4, 'p', 'y')
리스트와 마찬가지로 튜플의 0 번째 주소 다음인 1 번째 주소의 요소 4부터 끝까지 반환을 합니다.
튜플 더하기
>>> a2 = (6, 8)
>>> a3 = a1 + a2
>>> a3
(2, 4, 'p', 'y', 6, 8)
위 예를 언뜻 보면 튜플을 변경한것 같지만 실제로는 a3는 새로운 튜플에 튜플 a1 과 a2를 더한 것 입니다.
튜플 곱하기
>>> a3 = a2 * 3
(6, 8, 6, 8, 6, 8)
튜플 a3에 튜플 a2 를 3번 반복해서 나온 결과입니다.
변경은 불가하지만 위처럼 기존에 만들었던 튜플을 덮어씌기 형태로 새로 만드는것은 가능한가봅니다.
검색해 보니 위 같은 내용은 이후에 튜플의 고유id를 찾는 방법으로도 이 튜플이 기존에 존재하던게 아닌 새로운 튜플이란걸 확인 할 수 있습니다.
튜플 길이 구하기
>>> len(a1)
4
튜플 a1 에는 (2, 4, ‘p’, ‘y’) 요소들이 들어있고 4개의 요소가 들어있으므로 길이는 4가 반환 됩니다.
리스트 자료형에서는 sort, insert, remove, pop 같은 내장 함수가 있었지만 튜플 자료형의 경우에는 요소값을 변경할수가 없기때문에 리스트와 같은 내장 함수가 없습니다.
다음 포스팅에는 딕셔너리 자료형에 대해 공부해 보겠습니다.
참고적으로 딕셔너리는 key와 value의 형태로 존재하는데 key의 경우에는 고유한 값이므로 리스트 자료형을 사용할수 없고 튜플 자료형은 사용할수가 있습니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
