10.1 튜플과 그 속성
튜플은 Python의 네 가지 내장 컬렉션 타입 중 하나야.
이미 알겠지만, Python에는 객체 그룹을 저장할 수 있는 몇 가지 내장 데이터 타입이 있어. 이를테면 list
— 리스트, tuple
— 튜플, set
— 집합, dictionary
— 딕셔너리. 오늘은 두 번째고 가장 단순한 것 중 하나인 튜플을 볼 거야.
튜플 (tuple)
은 여러 요소를 저장할 수 있어. 요소마다 순서가 있어서 튜플은 정렬돼 있어 — ordered. 이 부분에서 리스트와 비슷해.
튜플은 변경할 수 없어 — 만들어진 후 변경되지 않기 때문에 프로그램 내에서 변경되지 않아야 하는 데이터를 저장하기에 좋아. 그래서 두 번째 특징은 불변성 (immutable).
중복된 요소에 대해서는 — 튜플에는 동일한 요소를 여러 번 저장할 수 있어 — allow duplicates. 다시 말해서, 리스트와 매우 비슷해.
유용해. 튜플을 리스트 대신 둥근 괄호 ()
를 사용하는 불변 리스트라고 생각할 수 있어.
10.2 튜플 생성
튜플은 불변하는 요소의 시퀀스이며, 여러 가지 방법으로 생성할 수 있어. 여기 가장 일반적인 방법들이 있어:
직접 선언:
튜플은 둥근 괄호 ()와 요소를 구분하는 쉼표를 사용해 직접 생성할 수 있어.
tuple1 = (1, 2, 3)
tuple2 = ("apple", "banana", "cherry", "apple", "cherry")
tuple3 = (1, "apple", True)
괄호 없이:
Python에서는 요소들을 쉼표로 구분함으로써 튜플을 괄호 없이도 생성할 수 있어.
tuple1 = 1, 2, 3
tuple2 = "apple", "banana", "cherry", "apple", "cherry"
tuple3 = 1, "apple", True
단일 요소 튜플:
단일 요소로 튜플을 만들려면 그 요소 뒤에 쉼표를 꼭 넣어야
해.
tuple1 = (1,)
tuple2 = ("apple",)
tuple3 = (True,)
tuple()
사용:
tuple()
함수는 반복 가능한 객체를 튜플로 변환해줘. 이건 리스트, 문자열 또는 다른 반복 가능한 객체일 수 있어.
list_to_tuple = tuple([1, 2, 3])
10.3 튜플 요소 분해
튜플을 다룰 때 여러 요소를 하나의 튜플로 묶거나 튜플을 여러 변수로 분해할 수 있어서 코드가 간단해져:
기본 분해
튜플을 변수로 분해하는 예:
my_tuple = (1, 2, 3)
x, y, z = my_tuple
여기서 변수 x
, y
및 z
는 각각 1
, 2
및 3
값을 가져.
확장된 분해
Python은 또한 확장된 분해를 지원하여 *
기호를 사용해 튜플의 일부를 리스트로 추출할 수 있어:
a, *b, c = (1, 2, 3, 4, 5) # a = 1, b = [2, 3, 4], c = 5
이 예에서 a
및 c
는 처음과 마지막 값을 받고, b
는 나머지 모든 값을 포함하는 리스트가 돼.
함수 내에서의 사용
튜플 분해는 함수에 매개변수를 전달할 때 자주 사용돼. 함수가 가변 인자 수를 받을 때나 인자가 미리 튜플 또는 리스트로 묶여 있을 때 특히 유용해:
def func(a, b, c):
print(a, b, c)
values = (1, 2, 3)
func(*values)
사용의 특징
튜플 분해는 튜플의 요소 수와 그들에게 할당된 변수 수가 일치해야 하며, 그렇지 않으면 오류가 발생해. 하지만 *
를 사용하면 여분의 요소를 모을 수 있어서 오류를 피할 수 있고 데이터 변화에 더 유연한 코드를 작성할 수 있어.
10.4 메서드 목록
튜플은 변경할 수 없는 객체라 거의 메서드가 없어. 딱 두 개 😊
count(x)
함수:
튜플에서 x
가 나타나는 횟수를 반환해. 특정 요소의 개수를 세는데 유용해.
t = (1, 2, 3, 2, 4, 2)
print(t.count(2)) # 3을 출력할 거야
index(x)
함수:
튜플에서 요소 x
가 처음 나타나는 인덱스를 반환해. 요소를 찾지 못하면 ValueError
예외가 발생해.
t = (1, 2, 3, 2, 4, 2)
print(t.index(3)) # 2를 출력할 거야
튜플 클래스의 메서드는 이것뿐이지만, 그렇다고 해서 할 수 있는 게 없다는 뜻은 아니야. 조금 복잡할 뿐이야.
GO TO FULL VERSION