Programming

Python 기초 - 튜플(Tuple) 자료형의 특징과 활용

IT오이시이 2023. 10. 17. 04:40
728x90

 

Python 기초 - 튜플형(Tuple) 자료형의 기초

파이썬에서 튜플(Tuple)은 변경할 수 없는(immutable) 시퀀스 자료형입니다.  튜플은 괄호 ()를 사용하여 정의하며, 각 요소는 쉼표로 구분됩니다.  리스트와 같이 인덱스를 이용하여 값을 접근 할수 있습니다. 

튜플은 리스트와 유사하지만 한 번 생성되면 값을 추가, 삭제, 수정할 수 없는 변할 수 없는 자료형을 Tuple(튜플)이라고 부릅니다.

my_tuple = (1, 2, 3, 'hello')

# 리스트와 같이 인덱스를 이용하여 값을 읽을수 있습니다.
print(my_tuple[0])  # 1
print(my_tuple[-1])  # 'hello'

 

 

인덱스를 이용한 튜플 값의 이용

튜플의 요소에는 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작하며 음수 인덱스는 뒤에서부터 요소에 접근합니다.

print(my_tuple[0])  # 1
print(my_tuple[-1])  # 'hello'

 

 

튜플은 수정이 불가능

튜플은 수정이 불가능하므로 새로운 튜플을 생성하거나 다른 방법을 사용하여 값을 변경해야 합니다. 이러한 특성은 튜플을 불변(immutable)하게 만들어 프로그램의 안정성을 높이고, 일부 상황에서 리스트보다 빠른 속도를 제공합니다.

 

튜플의 연결(concatenation) 과 튜플 언패킹(unpacking)

# 튜플 연결 (concatenation)
my_tuple = (1, 2, 3, 'hello')
new_tuple = my_tuple + (4, 5)
print(new_tuple)  # (1, 2, 3, 'hello', 4, 5)

 

튜플을 이용한 함수의 리턴으로 변수를 간결하게 관리 할 수 있습니다.

# 튜플 언패킹(unpacking)

def get_values():
    return (1, 2, 3, 'hello')

a, b, c, d = get_values()
print(a, b, c, d)  # 1 2 3 'hello'

 

리스트와 튜플의 차이점

 

() - 소괄호로 묶어 원소를 표현합니다.

원소가 하나라면 반드시 원소 뒤에 "," 을 적어주어야함 : a = (1,)

tuple_zero = ()    # 소괄호로 표현
tuple_one = ('a',) # 원소가 하나일때 반드시 뒤에 "," 를 붙인다.
tuple_many = ('a', 'b', 'c', 'd', 'e')
tuple_no_gwalho = 'a', 'b', 'c', 'd', 'e'  # 괄호 없이도 가능하다.

 

인덱스를 이용하여 값에 접근

시퀀스 자료형은 인덱싱, 슬라이싱, in (조회), 길이, 연결, 반복 연산이 가능하다.

cute = ('c', 'a', 't')
print(cute[1])  #인덱싱
#'a'

print(cute[1:]) #슬라이싱
#('a', 't')

print('e' in cute) #in연산자
#False

print(len(cute)) #len연산자
#3

print(cute + ('e', 'g', 'o', 'r', 'y')) #연결연산
#('c', 'a', 't', 'e', 'g', 'o', 'r', 'y')

print(cute * 3) #반복연산
#('c', 'a', 't', 'c', 'a', 't', 'c', 'a', 't')

 

인덱스를 이용하여 범위 조건부여

my_tuple = (1,2,3,4,5)
var1 = my_tuple[2]

var2 = my_tuple[0:2]
var3 = len(my_tuple)

print(var1, var2, var3) # 3 (1, 2) 5

 

리스트와 달리 수정이 불가능한 불변형

리스트와 튜플은 비슷한 점이 많습니다. 하지만 리스트는 내부 원소의 값을 수정, 삭제, 추가가 가능하고, 튜플은 수정이 불가능합니다.

my_tuple = (1, 2, 3)
my_list = [1, 2, 3]

my_tuple.append(4) #Error!
my_tuple.pop() #Error!
my_tuple[0] = 4 #Error!

my_list.append(4) #OK
my_list.pop() #OK
my_list[0] = 4 #OK

 

튜플형은 자료를 추가, 삭제, 변경할 수 없다!

my_tuple = (1, 2, 3)

try:
    #여기에 인덱싱을 이용해서 Tuple의 값을 변경해봅시다.
    my_tuple[1] = 5
    
except TypeError:
    print("Tuple은 값을 변경할 수 없습니다.")
    
try:
    #여기에 .append()를 이용해서 Tuple의 값을 추가해봅시다.
    my_tuple.append(6)
    
except AttributeError:
    print("Tuple은 값을 추가할 수 없습니다.")

 

728x90
반응형