728x90
반응형
SMALL
1. 튜플(tuple)
- <class 'tuple'>
- 리스트와 비슷하지만 리스트는 대괄호로 자료를 감싸고, 튜플은 소괄호로 감쌈
- 튜플 내 요소의 수정, 삭제 불가능
- 요소가 바뀌지 않아야 하는 경우에 사용
1-1. 튜플의 생성
1) 대괄호로 감싼다.
tu1 = ()
print(tu1)
>>> ()
print(type(tu1))
>>> <class 'tuple'>
2) tuple 함수 사용, 여러 요소를 만들 땐 대괄호로 감싼다.(리스트 구조는 아님)
tu2 = tuple([1, 3, 5, 7])
print(tu2)
>>> (1, 3, 5, 7)
3) 요소만 넣기
tu3 = 1, 3, 5, 7
print(tu3)
>>> (1, 3, 5, 7)
print(type(tu3))
>>> <class 'tuple'>
1-2. 튜플의 항목
1) 다차원의 튜플 생성 가능
tu4 = ('apple', 'banana', ('🍓', '🍒', '🍑'))
print(tu4)
>>> ('apple', 'banana', ('🍓', '🍒', '🍑'))
2) 튜플 내 리스트 형태의 요소 생성 가능
tu5 = ('apple', 'banana', ['🍓', '🍒', '🍑'])
print(tu5)
>>> ('apple', 'banana', ['🍓', '🍒', '🍑'])
print(type(tu5))
>>> <class 'tuple'>
3) 튜플은 중복된 데이터를 포함
tu5 = ('apple', 'banana', ['🍓', '🍒', '🍑'], 'banana')
print(tu5)
>>> ('apple', 'banana', ['🍓', '🍒', '🍑'], 'banana')
2. 튜플의 수정 및 삭제
- 한 번 정의된 튜플은 새로운 데이터를 추가하거나 데이터의 수정 및 삭제가 불가능
- 튜플내 데이터를 인덱싱하여 삭제하는 것도 당연히 불가능하다.
tu6 = (1, 2, 'apple', 'banana')
print(tu6)
>>> (1, 2, 'apple', 'banana')
print(tu6[2]) # 튜플도 인덱싱 가능
>>> apple
# 튜플 내 요소의 수정이 불가능
tu6[2] = 'orange'
>>> TypeError: 'tuple' object does not support item assignment
del tu6[2]
>>> TypeError: 'tuple' object doesn't support item deletion
del tu6 # 튜플 전체는 삭제가능
- 다음 코드는 튜플의 리스트 요소 내 데이터를 변경하는 것이기 때문에 정상적으로 출력된다.
tu7 = ('apple', 'banana', ['🍓', '🍒', '🍑'])
tu7[2][1] = '🍍'
print(tu7)
>>> ('apple', 'banana', ['🍓', '🍍', '🍑'])
- 튜플 내 리스트 요소 자체는 수정 불가
tu7 = ('apple', 'banana', ['🍓', '🍒', '🍑'])
tu7[-1] = ['🍕', '🍔', '🍟']
>>> TypeError: 'tuple' object does not support item assignment
- tu8 변수가 가리키는 데이터의 주소 자체가 변경된 것이기 때문에 데이터를 바꾸는 것이 가능
tu8 = ('apple', 'banana', ['🍓', '🍒', '🍑'])
print(tu8)
>>> ('apple', 'banana', ['🍓', '🍒', '🍑'])
tu8 = '❤'
print(tu8)
>>> ❤
아래 그림을 보면 이해하기 쉽다.
3. 튜플의 인덱싱과 슬라이싱 연산
3-1. 인덱싱
- 리스트와 같은 방식으로 인덱싱이 가능하다.
tu9 = (1, 2, 'apple', 'banana')
print(tu9[0])
>>> 1
print(tu9[-1])
>>> banana
3-2. 슬라이싱
tu9 = (1, 2, 'apple', 'banana')
print(tu9[1:])
>>> (2, 'apple', 'banana')
print(tu9[1:3])
>>> (2, 'apple')
print(tu9[:-1])
>>> (1, 2, 'apple') # 끝에서 첫번째 인덱스 직전까지
3-3. 튜플의 덧셈
- 리스트와 마찬가지로 튜플의 덧셈연산은 결합이다.
tu9 = (1, 2, 'apple', 'banana')
tu10 = (30, 40)
print(tu9 + tu10)
>>> (1, 2, 'apple', 'banana', 30, 40)
- 튜플 내 요소가 변경된 것은 아니다.
3-4. 튜플의 곱셈
- 리스트와 마찬가지로 튜플과 일반 상수와의 곱 연산은 튜플의 반복이다.
tu9 = (1, 2, 'apple', 'banana')
print(tu9 * 3)
>>> (1, 2, 'apple', 'banana', 1, 2, 'apple', 'banana', 1, 2, 'apple', 'banana')
3-5. 튜플의 요소 갯수 알아보기
- len() 함수 이용
tu9 = (1, 2, 'apple', 'banana')
print(len(tu9))
>>> 4
4.튜플의 정렬
- 튜플은 sort()함수의 기능이 없음
tu11 = (1, 2, 3, 0)
print(tu11)
>>> print(tu11)
tu11.sort()
>>> AttributeError: 'tuple' object has no attribute 'sort'
✔ 그렇다면 튜플 내 데이터를 정렬할 때는 어떤 방식을 사용할까? 🤔
- 리스트로 변환 후 정렬하기
list_tu11 = list(tu11)
print(list_tu11)
>>> [1, 2, 3, 0]
list_tu11.sort()
print(list_tu11)
>>> [0, 1, 2, 3]
- sorted()함수를 이용하여 리스트로 반환하여 정렬하기
- sorted(): iterable 객체로부터 정렬된 리스트를 생성하기 때문에 sorted() 함수 적용 후 출력 시 리스트로 반환
tu12 = sorted(tu11)
print(tu12)
>>> [0, 1, 2, 3]
728x90
반응형
LIST
'Python > Basic' 카테고리의 다른 글
[파이썬, Python] 제어문 - 1️⃣ 조건문_ if문, 삼항 연산자, 논리 연산자 (0) | 2023.03.07 |
---|---|
[파이썬, Python] 부동 소수점(floating point number) - 실수의 연산, 부동 소수점 오차, 실수의 비교 (0) | 2023.03.07 |
[파이썬, Python] 자료구조(Data Structure) - 1️⃣ 리스트(list) (0) | 2023.03.06 |
[파이썬, Python] 문자열(string) 다루기 - 문자열 함수, 문자열 인덱싱, 슬라이싱 (0) | 2023.03.06 |
[파이썬, Python] 입력함수 input()에 대해 알아보자 🧐 (0) | 2023.03.06 |