튜플이란
튜플은 리스트와 동일한 형태
다른 점은 리스트와 다르게 변경이 불가능하다(read-only)
- 나머지 기능(인덱싱, 슬라이싱 등)은 리스트와 동일함
- 튜플은 소괄호()를 사용하여 정의
fruits = () #공백 튜플 생성
fruits = ("apple","banana","grape") #초기값을 가진 튜플 생성
result = fruits[1] # 인덱스를 사용해서 요소 접근 가능
튜플은 괄호 없이 항목을 쉼표로 분리하여도 자동으로 튜플을 생성함
fruits = ("apple","banana","grape")
fruits = "apple", "banana", "grape" #괄호 없이 튜플 생성
튜플 생성 시 주의할 점
요소가 하나뿐인 튜플을 만들 때는 요소의 끝에 반드시 쉼표를 추가해야 함
쉼표가 없으면 튜플이 아니라 문자열로 인식함
single_tuple = ("apple",)
no_tuple = ("apple") #쉼표가 없으면 문자열임
튜플은 읽기만 가능
fruits = ("apple", "banana", "grape")
fruits[1] = "pear" #TypeError: "tuple" object does not support item assignment
튜플과 리스트 간 전환
생성자 함수를 사용하여 변환 가능
#리스트 -> 튜플
myList = [1,2,3,4]
myTuple = tuple(myList) # tuple()는 튜플을 생성하는 함수(생성자)이다.
print(myTuple)
#출력 결과 : (1,2,3,4)
myTuple = (1, 2, 3, 4)
myList = list(myTuple) # list()는 리스트를 생성하는 함수(생성자)이다.
print(myList)
출력 결과 : [1, 2, 3, 4]
튜플 연산
튜플은 한번 생성되면 요소의 추가 및 삭제 불가능함
하지만 += 연산자를 이용하여 다른 튜플을 추가하는 것은 가능함
->기존 튜플이 변경되는 것이 아닌 새로운 튜플을 만드는 것임
fruits = ("apple", "banana", "grape")
fruits += ("pear", "kiwi")
print(fruits)
#출력 결과 : ("apple", "banana", "grape", "pear", "kiwi")
+=연산자를 이용하여 리스트에 튜플을 추가할 수 있다
numbers = [10, 20, 30]
numbers += (40, 50)
print(numbers)
#출력 결과 : [10, 20, 30, 40, 50]
튜플 패킹과 언패킹
패킹은 여러 개의 항목을 합쳐서 튜플을 만드는 것을 뜻함
언패킹은 튜플에 저장된 데이터를 개별 변수로 푸는 것을 뜻함
자료형이 다른 경우에도 패킹과 언패킹이 가능하다
student = (“kim”, [3.1, 3.6, 4.0, 0.0])
name, grades = student #언패킹
print(name) # Kim
print(grades) # [3.1, 3.6, 4.0, 0.0]
튜플은 기본적으로 변경이 불가능하다고 위에서 언급했다
하지만 위의 예제에서 튜플의 요소로 리스트가 들어가 있는데,
이럴 경우 요소로 들어간 리스트에 대한 수정은 가능하다.
student[1][3] = 4.3 #가능
패킹과 언패킹을 활용해서 변수의 값 스왑 하기
n1 = 10 n2 = 90 n1, n2 = (n2, n1) # (90 10)
enumerate()
enumerate()함수는 리스트 또는 튜플에 대해, 각 요소 별 (인덱스, 값) 형태의 튜플 반환
튜플은 왜 쓸까?
- 변경 불가능 객체이기에 튜플을 통한 반복이 더 빠름
- 변경 불가능 객체이기에 딕셔너리 키로 사용 가능
- 다른 개발자가 특정 데이터를 변경하는 것을 금지 가능(보안성)
리스트 | 튜플 | |
문법 | 항목을 [ ]으로 감쌈 | 항목을 ( )으로 감쌈 |
변경여부 | 가능 | 불가능 |
메소드 | 약 46개의 메소드 지원 | 약 33개의 메소드 지원 |
용도 | 딕셔너리에서 키로 이용할 수 없음 | 딕셔너리에서 키로 이용할 수 있음 |
'Python Category > Python' 카테고리의 다른 글
[Python] 문자열 (1) | 2022.12.08 |
---|---|
[Python] 딕셔너리 (0) | 2022.12.07 |
[Python] 세트 (0) | 2022.12.07 |
[Python] 리스트(2) (0) | 2022.12.06 |
[Python] 리스트(1) (0) | 2022.12.06 |