[Python3] 데이터 타입 - Tuple

Alexandria·2023년 8월 31일
0

Python3 Basic

목록 보기
7/19
post-thumbnail

1. Tuple

tuple 변수는 여러 개의 값을 담을 수 있는 자료형입니다.

문자열과 마찬가지로 Sequence 자료형으로, 인덱싱(Indexing)과 슬라이싱(Slicing)이 가능하지만

불변(Immutable) 자료형으로 데이터를 추가하거나 삭제가 불가능합니다.

💡 Sequence는 여러 개의 데이터들이 연속적으로 이루어진 자료형이며 str, list, tuple이 해당됩니다. Immutable은 데이터를 변경할 수 없는 자료형이며 tuple, string 등이 해당됩니다.

다음과 같이 tuple() 혹은 ()를 이용하여 생성할 수 있습니다.

a = tuple()
print(type(a)) # <class 'tuple'>

a = ()
print(type(a)) # <class 'tuple'>

tuple()을 사용하면 코드를 봤을 때 ()보다는 이해하기 쉬우며,

tuple()보다 ()를 사용하면 성능 면에서 이점이 있습니다.

이번에는 콤마(,), (), 반복문을 이용하여 데이터와 함께 tuple을 생성해 봅니다.

a = 0,1,2,3,4,5,6,7,8,9
print(a) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

a = (0,1,2,3,4,5,6,7,8,9)
print(a) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

a = tuple(i for i in range(10))
print(a) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

2. Operator

문자열처럼 덧셈(+) 기호를 이용하여 tuple을 이어붙이거나 곱셈(*) 기호를 이용하여 tuple을 반복하여 이어붙일 수 있습니다.

a = (0, 1, 3, 4)
b = (5, 6, 7, 8, 9)
print(f"{a+b}") # (0, 1, 3, 4, 5, 6, 7, 8, 9)
print(f"{a*3}") # (0, 1, 3, 4, 0, 1, 3, 4, 0, 1, 3, 4)

💡 tuple + tuple이 아닌 tuple + 다른 자료형이면 TypeError가 발생합니다.

3. Indexing and Slicing

문자열처럼 Sequence 자료형이기 때문에 인덱싱(Indexing)과 슬라이싱(Slicing)이 가능합니다.

인덱싱(Indexing)은 문자열의 위치를 통해 데이터를 가져올 수 있습니다.

a = (0,1,2,3,4,5,6,7,8,9)
print(a[2]) # 2

💡 인덱스는 0부터 시작하며, -1은 마지막을 의미합니다.

중첩된 tuple은 인덱스를 통해 데이터에 접근할 수 있습니다.

a = (0, 1, (2, 3, 4, (5, 6, 7), 8, 9))
print(a[2][3][2]) # 7

인덱싱이 1개의 데이터를 가져왔다면, 슬라이싱(Slicing)은 범위만큼 데이터를 가져올 수 있습니다.

슬라이싱 시 시작 인덱스 혹은 끝 인덱스에 빈 값을 주면 처음부터 혹은 끝부터라는 의미가 됩니다.

a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(a[:5])    # (0, 1, 2, 3, 4)
print(a[-3:])   # (7, 8, 9)
print(a[2:7])   # (2, 3, 4, 5, 6)
print(a[::-1])  # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
print(a[1:6:2]) # (1, 3, 5)

💡 세 번째 인자는 step의 역할이 됩니다.

4. Functions

index를 사용하면 tuple에서 찾는 데이터 중 제일 첫 번째로 나오는 위치를 반환합니다.

두 번째 인자 값은 찾기 시작하는 위치이며, 세 번째 인자 값은 마지막 위치입니다.

a = tuple(1 if i % 2 == 0 else 0 for i in range(10))
print(a) # (1, 0, 1, 0, 1, 0, 1, 0, 1, 0)
print(a.index(1)) # 0
print(a.index(1, 1, len(a))) # 2

tuple의 데이터에서 중복된 데이터의 수를 구하고 싶다면 count를 사용합니다.

a = tuple(1 if i % 2 == 0 else 0 for i in range(10))
print(a) # (1, 0, 1, 0, 1, 0, 1, 0, 1, 0)
print(a.count(0)) # 5
profile
IT 도서관

0개의 댓글