튜플(tuple)은 정렬과 변경 불가능(immutable)의 객체들의 집합입니다. 튜플은 리스트와 유사하지만 요소들의 생성, 수정, 삭제가 불가능하다. 그리고 () 및 ', ' 을 사용하여 값들을 구분한다.
예) my_tuple = ("Max", 20, "New York")
튜플은 괄호 및 쉼표을 이용하여 생성할 수 있다. 혹은 튜플에 내장되어 있는 기능을 이용하여 생성한다.
tuple_1 = ("Max", 28, "New York")
tuple_2 = "Linda", 25, "Miami" # 괄호는 옵션이다.
# 특수한 경우: 요소가 하나만 있는 튜플의 끝에는 쉼표가 있어야 한다.
# 그렇지 않으면 그것은 튜플로 인식되지 않는다.
tuple_3 = (25,)
print(tuple_1)
print(tuple_2)
print(tuple_3)
('Max', 28, 'New York')
('Linda', 25, 'Miami')
(25,)
# 튜플에서 기본으로 제공되는 기능을 이용하여
# 리스트, 딕셔너리, 스트링 타입을 튜플 타입으로 변경할 수 있다.
tuple_4 = tuple([1,2,3])
print(tuple_4)
(1, 2, 3)
인덱스 번호를 참조하여 튜플 항목에 액세스 할 수 있습니다. 인덱스는 0부터 시작합니다.
tuple_1 = ("Max", 28, "New York")
item = tuple_1[0]
print(item)
Max
# 튜플 접근에 음수 인덱싱을 사용할 수 있습니다.
# 예: -1은 마지막 항목을 나타냅니다.
item = tuple_1[-1]
print(item)
New York
튜플의 값을 추가하거나 변경하려 하면 에러가 발생한다.
tuple_1 = ("Max", 28, "New York")
tuple_1[2] = "Boston"
--- 에러 발생 ---
Traceback (most recent call last):
File "c:\workspace\List.py", line 2, in <module>
tuple_1[2] = "Boston"
TypeError: 'tuple' object does not support item assignment
tuple_2 = "Linda", 25, "Miami"
del tuple_2
tuple_1 = ("Max", 28, "New York")
# for 문을 사용하여 튜플값 출력
for i in tuple_1:
print(i)
Max
28
New York
if "New York" in tuple_1:
print("yes")
else:
print("no")
yes
튜플에 유용한 함수들
my_tuple = ('a','p','p','l','e',)
# len() : 튜플의 길이 구하기
print(len(my_tuple))
5
# count(x) : x 값과 같은 요수의 갯수
print(my_tuple.count('p'))
2
# index(x) : x 와 같은 값의 첫번째 인덱스 번호
print(my_tuple.index('l'))
3
# 튜플 곱하기
my_tuple = ('a', 'b') * 5
print(my_tuple)
('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b')
# 튜플 합치기
my_tuple = (1,2,3) + (4,5,6)
print(my_tuple)
(1, 2, 3, 4, 5, 6)
# 리스트를 튜플로 변환
my_list = ['a', 'b', 'c', 'd']
list_to_tuple = tuple(my_list)
print(type(list_to_tuple))
print(list_to_tuple)
<class 'tuple'>
('a', 'b', 'c', 'd')
# 튜플을 리스트로 변환
tuple_to_list = list(list_to_tuple)
print(type(tuple_to_list))
print(tuple_to_list)
<class 'list'>
['a', 'b', 'c', 'd']
# 문자열을 튜플로 변환
string_to_tuple = tuple('Hello')
print(string_to_tuple)
('H', 'e', 'l', 'l', 'o')
# a[시작:끝:스탭], 스탭 시작값 1
a = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b = a[1:3] # 마지막 인덱스값은 포함되지 않는다.
print(b)
(2, 3)
b = a[2:] # 끝까지
print(b)
(3, 4, 5, 6, 7, 8, 9, 10)
b = a[:3] # 처음 부터
print(b)
(1, 2, 3)
b = a[::2] # 처음부터 시작해 두 스탭씩 뛰면서
print(b)
(1, 3, 5, 7, 9)
b = a[::-1] # 튜플 역전
print(b)
(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
# 튜플의 수와 일치하는 목록 생성
tuple_1 = ("Max", 28, "New York")
name, age, city = tuple_1
print(name)
print(age)
print(city)
Max
28
New York
# Tip: *를 사용하여 목록에 있는 여러 요소의 한 번에 포함할 수 있다.
my_tuple = (0, 1, 2, 3, 4, 5)
item_first, *items_between, item_last = my_tuple
print(item_first)
print(items_between)
print(item_last)
0
[1, 2, 3, 4]
5
튜플에는 다른 튜플(또는 기타 컨테이너 타입)이 포함될 수 있음.
a = ((0, 1), ('age', 'height'))
print(a)
print(a[0])
((0, 1), ('age', 'height'))
(0, 1)
튜플은 추가 및 수정이 불가능하기 때문에 내부적으로 최적화되어 있다. 따라서, 큰 데이터로 작업할 때 튜플이 더 효율적이다.
# 크기 비교
import sys
my_list = [0, 1, 2, "hello", True]
my_tuple = (0, 1, 2, "hello", True)
print(sys.getsizeof(my_list), "bytes")
print(sys.getsizeof(my_tuple), "bytes")
120 bytes
80 bytes
# 리스트와 튜플의 실행 시간 비교
import timeit
print(timeit.timeit(stmt="[0, 1, 2, 3, 4, 5]", number=1000000))
print(timeit.timeit(stmt="(0, 1, 2, 3, 4, 5)", number=1000000))
0.0567256
0.007724599999999998
파이썬 - 집합(set) (0) | 2021.02.15 |
---|---|
파이썬 - 딕셔너리(Dictionary) 자료형 (0) | 2021.02.10 |
파이썬 - 리스트(list) 자료형 (0) | 2021.02.08 |
파이썬 - 문자열 포맷별 출력 (0) | 2020.12.30 |
파이썬 - 연산자 우선순위 (Operators Precedence) (0) | 2020.08.27 |
댓글 영역