[Python] 파이썬 튜플(Tuple) 사용법 & 예제 총정리

파이썬 튜플(Tuple)이란?

파이썬에서 튜플이라는 여러 개의 데이터를 묶은 하나로 묶은 하나의 집합으로써 데이터의 구성과 사용법은 앞서 포스팅한 파이썬의 리스트와 비슷합니다. 하지만 리스트의 경우에는 내부의 값을 변경할 수 있는 반면 튜플은 한번 저장된 데이터는 변경이 불가능하다는 특징이 있습니다. 그렇기 때문에 파이썬의 튜플은 리스트에 비해 적은 메모리를 소모하며 속도가 빠릅니다. 이러한 특성으로 파이썬에서 튜플은 주로 변경되지 않는 데이터 셋을 저장하거나 여러 값을 반환하는 함수등에서 요긴하게 활용할 수 있습니다.

 

  • 튜플은 생성되면 튜플 내부 요소의 값을 추가, 삭제, 변경이 불가능합니다.
  • 튜플의 메모리 소모량은 리스트에 비해 적습니다.
  • 튜플은 순서를 가지므로 인덱스를 통해 요소에 직접 접근할 수 있습니다.

 


 

 파이썬 튜플(Tuple) 생성하기 

파이썬에서는 튜플을 생성할 수 있는 다양한 방법들을 제공합니다.

 

괄호를 사용하여 생성하기 (가장 많이 사용)

ex_tuple = (1, 2, 3)
print(ex_tuple)

결과 : (1, 2, 3)

 

파이썬에서 튜플을 생성할 때는 ( ) 소괄호를 사용합니다. 튜플에 값을 저장할 때는 ( ) 소괄호로 묶어주면 튜플이 되며 각 값은 , (콤마)로 구분해 줍니다.

 

 

괄호 없이 튜플 생성하기

ex_tuple = 1, 2, "3"
print(ex_tuple)

결과 : (1, 2, '3')

 

위와 같이 ( ) 소괄호 없이 콤마만 사용해도 파이썬 내부에서는 튜플로 인식합니다. 하지만 가독성을 위해 ( ) 소괄호를 사용해 주는 것이 좋습니다. 그리고 위와 같이 튜플은 리스트처럼 자료형을 섞어서 사용해도 됩니다.

 

 

하나의 값만 저장되어 있는 튜플 생성

single_item_tuple = (42,)
print(single_item_tuple)

결과 : (42,)

튜플에 요소가 한 개인 튜플을 만들 때는 값 뒤에 , (콤마)를 붙여야 합니다. 그렇지 않으면 파이썬에서 튜플이 아닌 그냥 값으로만 인식합니다. 괄호로 묶지 않고 값 한 개에 ,를 붙여도 됩니다.

 

 

빈 튜플 생성

empty_tuple = ()
print(empty_tuple)

결과 : ()

빈 튜플을 생성할 수도 있습니다. 다만 튜플은 값을 추가할 수 없는 불변의 성질을 가지고 있기 때문에 위와 같이 하나의 요소만 있는 튜플이나 빈 튜플은 일반적으로 잘 사용하지는 않습니다.

 

※ 튜플에 값을 추가하려면 리스트를 이용하자
튜플은 불변(immutable)한 자료형으로, 한 번 생성되면 내부의 값이나 구조를 변경할 수 없습니다. 하지만 값을 추가하는 방법이 전혀 불가능한 방법은 아닙니다. 방법은 리스트를 사용하는 방법인데 리스트는 동적으로 값을 추가할 수 있기 때문에 튜플 -> 리스트로 변환을 한 뒤 리스트에서 값을 추가하고 리스트 -> 튜플로 변환하는 과정을 통해 튜플에 값을 추가하는 방법을 고려해 볼 수 있습니다.

 


 

 파이썬 튜플(Tuple) 활용하기 

튜플 요소에 접근하기

ex_tuple = (10, 20, 30)
print(ex_tuple[0])  # 10
print(ex_tuple[1])  # 20
print(ex_tuple[2])  # 30
print(ex_tuple[0:]) # (10,20,30)
print(ex_tuple[2:3]) # (30, )

결과 ↓

10
20
30
(10, 20, 30)
(30,)

 

튜플의 각 요소는 인덱스를 통해 접근할 수 있습니다. 인덱스는 0부터 시작합니다. 또한 위와 같이 슬라이스도 튜플에서 사용이 가능합니다.

 

 

튜플 언패킹 (Tuple Unpacking)

coordinates = (3, 5)
x, y = coordinates  # x에는 3이, y에는 5가 할당됨
print(x)
print(y)

결과 ↓

3

5

 

튜플 coordinates에는 3과 5의 값이 저장되어 있습니다. 이를 x와 y에 각각 3과 5의 값을 저장할 수 있습니다. 위와 같이 튜플의 값을 변수들로 분해하여 할당하는 것을 튜플 언패킹이라고 합니다.

 

 

함수에서 여러 값을 반환하기

def get_name_and_age():
    name = "Alice"
    age = 30
    return name, age

name, age = get_name_and_age()
print(name)  # "Alice"
print(age)   # 30

결과 ↓

Alice

30

 

튜플 언패킹 방식의 대표적인 예는 함수에서 여러 개의 값을 반환 받을때를 예로 들 수 있겠습니다. 위와 같은 방식을 사용하면 튜플 형태로 여러개의 값이 반환됩니다. 이렇게 튜플의 언패킹 방식은 위와 같이 여러개의 값을 함께 반환받아야 할 때 유용하게 사용됩니다.

 

 

딕셔너리의 키로 사용

point = (3, 5)
points_dict = {point: "This is the point"}

튜플은 딕셔너리의 키로 사용될 수 있습니다. 딕셔너리의 키는 불변(immutable)한 값이어야 하므로 리스트와 같이 변경 가능한(mutable) 자료형은 키로 사용할 수 없습니다. 하지만 튜플은 불변 자료형이기 때문에 딕셔너리의 키로 사용하기에 적합합니다. 위의 예제에서는 point 튜플을 points_dict의 키로 사용하여 값을 저장하고 있습니다.

 


 

 다양한 파이썬 튜플 내장함수 

파이썬에서는 튜플에서 사용할 수 있는 다양한 내장함수를 제공합니다. 이를 통해 튜플의 길이와 요소, 최댓값과, 최솟값등을 따로 계산할 필요 없이 간단한 내장함수를 호출만으로 도출할 수 있습니다. 메서드의 종류와 사용방식은 리스트와 거의 같다고 보시면 됩니다.

 

튜플의 길이 구하기

ex_tuple = (1, 2, 3)
length = len(ex_tuple)  # 3

len() 메서드를 사용하면 튜플의 길이를 반환합니다.

 

튜플의 요소 개수 구하기

ex_tuple = (1, 2, 2, 3, 2)
count_of_twos = ex_tuple.count(2)  # 3

count() 메서드를 사용하면 튜플의 특정 요소의 개수를 세어 반환합니다.

 

튜플 특정 요소의 인덱스 구하기

ex_tuple = (10, 20, 30, 20)
index_of_20 = ex_tuple.index(20)  # 1 (첫 번째 20은 인덱스 1에 있음)

index() 메서드를 사용하면 튜플의 특정 타깃 요소가 첫 번째로 등장하는 인덱스를 반환합니다.

 

튜플 정렬하여 리스트로 반환하기

ex_tuple = (3, 1, 2)
sorted_list = sorted(ex_tuple)  # [1, 2, 3]

sorted() 메서드를 사용하면 튜플의 요소들을 정렬한 뒤에 리스트 형식으로 반환합니다.

 

튜플의 요소에서 최대값 구하기

ex_tuple = (10, 5, 8)
maximum = max(ex_tuple)  # 10

max() 메서드를 사용하면 튜플의 요소 중 최댓값을 반환합니다.

 

튜플의 요소에서 최소값 구하기

ex_tuple = (10, 5, 8)
minimum = min(ex_tuple)  # 5

min() 메서드를 사용하면 튜플의 요소 중 최솟값을 반환합니다.

 

튜플 요소의 총 합 구하기

ex_tuple = (1, 2, 3, 4)
total = sum(ex_tuple)  # 10

sum(): 숫자 요소를 가진 튜플의 합을 반환합니다. 참고로 이 메서드는 숫자 형식으로 이루어진 튜플에서만 사용이 가능합니다.

 

튜플 <-> 리스트 서로 변환하기 

ex_list = [ 0, 1, 2, 3 ]
ex_tuple = (tuple(ex_list)) # tuple로 변경
print(ex_tuple) # (0, 1, 2, 3)

ex_list = (list(ex_tuple)) # list로 변경
print(ex_list) # [0, 1, 2, 3]

tuple() 메서드를 통해 리스트를 튜플로 변환할 수도 있고 list() 메서드를 통해 튜플을 리스트로 변환할 수 있고 특히 튜플은 변경 불가능한 특성 때문에 값을 추가하거나 삭제하기가 불가능한데 불가피하게 값을 추가해야 할 때 위에서 언급한것 처럼 리스트로 변환하여 값을 추가하거나 삭제하는 등의 작업을 진행한 뒤 다시 튜플로 변환하는 과정을 통해 값을 추가할 수도 있습니다.

댓글

Designed by JB FACTORY