8. 파이썬 자료형 튜플
이제 문법을 두개 알아보았으니 다시 자료형으로 넘어 올 차례이다. 이 포스트를 통해 파이썬에 존재하는 튜플(Tuple)을 어떻게 표현하고, 어떤 함수들이 있는지 살펴보도록 한다.
들어가기전에
이 포스트는 여러분이 파이썬을 설치했고 각자 원하는 IDE를 이용해 파이썬을 개발한다고 가정한다. 대화형(Interactive) 터미널을 사용해도 상관 없다. 혹시 파이썬을 설치하지 않았다면 1.파이썬 설치 및 개발환경 설정 이 포스트에서 파이썬과 파이썬 개발환경을 먼저 셋업하길 바란다. 앞서 말했듯이 반드시 실습 해 보길 바라고 30분 이상 소요하지 말라.
숫자(Numbers) : 12, 24.3, 3+2j, .. (2.파이썬 자료형 숫자)
문자(Strings) : "hello, "world" (3. (1) 파이썬 자료형 문자열, 3.(2) 파이썬 자료형 문자열)
리스트(Lists) : [1, 3, [3, 'hey'], 4] (4. (1) 파이썬 자료형 리스트, 4. (2) 파이썬 자료형 리스트)
딕셔너리(Dictionaries) : { 'name': 'fsoftwareengineer', 'age' : 17} (5. (1) 파이썬 자료형 딕셔너리, 5.(2) 파이썬 자료형 딕셔너리)
튜플(Tuples) : (1, 'a', 4, 'c')
파일(Files) : f = open('filename', 'r')
셋(Sets) (집합) : { 1, 4, 5 }
다른 타입들 : Boolean (True/Faluse), types, None, etc
프로그래밍 유닛 타입(Programming unit types) : 함수(Functions), 모듈(Modules), 클래스(Classes)
구현 레벨 타입(Implementational-level types) : 예외(Exception) 등등..
목표
- 튜플 (Tuple)
- 튜플 접근 및 읽기
- 불변성 (Immutability)
- 리스트 <-> 튜플
- sort
튜플 (Tuple)
빈 튜플 (Empty Tuple)
emptyTuple = ()
print(emptyTuple) ()
아이템이 한 개인 튜플
oneElementTuple = (10,)
print(oneElementTuple) (10, )
oneElementTuple = (10)
print(oneElementTuple) 10
아이템이 두 개 이상인 튜플
tuple = (10, 30, 20, 80)
print(tuple)
tuple = (["apple", "orange"], "cat", 17, 45.3)
print(tuple) (['apple', 'orange'], 'cat', 17, 45.3)
중첩 튜플(Nested Tuple)
tuple = ((1, 2), (3, 4), (6, 8))
print(tuple) ((1, 2), (3, 4), (6, 8))
튜플 접근 및 읽기
인덱스로 접근
tuple = (10, 30, 20, 80)
print(tuple[2]) 20
슬라이싱
tuple = (10, 30, 20, 80)
print(tuple[:2]) (10, 30)
불변성 (Immutability)
tuple = (10, 30, 20, 80)
tuple[1] = 100
print(tuple) tuple[1] = 100 TypeError: 'tuple' object does not support item assignment
tuple = (["apple", "orange"], "cat", 17, 45.3)
tuple[0][1] = "WHAT?"
print(tuple) (['apple', 'WHAT?'], 'cat', 17, 45.3)
여러분은 붉은 박스의 오렌지 부분의 값을 What으로 바꾼 것이지 튜플이 가지고 있는 값(인덱스 0의 노란색 동그라미 또는 파랗고 긴 네모의 레퍼런스) 자체를 바꾼 것이 아니다. 리스트는 Mutable하므로 당연히 값을 변경 할 수 있다.
tuple = (["apple", "orange"], "cat", 17, 45.3)
tuple[0] = ["mango", "banana"]
print(tuple) tuple[0] = ["mango", "banana"] TypeError: 'tuple' object does not support item assignment
리스트 <-> 튜플
tuple = (10, 30, 20, 80)
tList = list(tuple)
print(tList) [10, 30, 20, 80]
list = [10, 30, 20, 80]
lTuple = tuple(list)
print(lTuple) (10, 30, 20, 80)
sort
tuple = (100, 20, 1, 49, 3)
sortedTuple = sorted(tuple)
print(tuple)
print(sortedTuple) (100, 20, 1, 49, 3) [1, 3, 20, 49, 100]
잘 보자. sortedTuple의 자료형이 무엇인가? 그렇다 리스트이다! 튜플은 값을 변경 할 수 없었다는 것을 기억하는가? 그래서 list.sort()가 리스트 내부에서 in-place로 소팅을 했던 것 과 다르게 tuple에서는 tuple의 값을 변경 할 수 없으므로 sort라는 함수가 존재하지 않는다. sorted라는 함수는 본래 리스트를 리턴한다.
끝
이번 포스트를 이용해 파이썬 자료형 튜플에 대해서 알아보았다. 다음 포스트에서는 이 블로그에서 다루게 될 마지막 자료형인 파일에 대해서