TITEDIOS 편한 코딩

Python 기초강의: #15 데이터 구조 - 튜플(Tuple) 본문

파이썬

Python 기초강의: #15 데이터 구조 - 튜플(Tuple)

TitediosKW 2024. 7. 7. 19:00
반응형


이번 포스팅에서는 리스트와 유사하지만 전혀 다른 성격의 데이터 구조인 튜플에 대해서 알아보겠습니다. 파이썬에서 튜플은 여러 값을 순서대로 저장하는 강력한 자료 구조입니다. 튜플(Tuple)은 리스트와 유사한 데이터 구조지만, 몇 가지 중요한 차이점이 있습니다. 한 번 생성된 튜플은 변경할 수 없다(Immutable)는 것입니다. 이러한 불변성 덕분에 데이터 무결성을 보장하고 실수로 인한 변경을 방지하는데 유용합니다. 이번 포스팅에서는 파이썬 튜플의 개념, 특징 및 활용 예제를 통해 튜플을 자세히 살펴보겠습니다.

1. 튜플이란 무엇인가?

튜플은 파이썬에서 순서가 있는 불변의 시퀀스 데이터 구조입니다. 튜플은 소괄호 ()로 정의되며, 다양한 데이터 타입을 요소로 가질 수 있습니다. 튜플은 리스트와 달리 변경할 수 없다는 특징이 있습니다. 즉, 튜플 생성 후에는 요소를 추가, 삭제, 수정하는 등의 작업이 불가능합니다.

# 튜플 예제
fruits = ("apple", "banana", "cherry")
numbers = (1, 2, 3, 4, 5)
mixed = (1, "apple", 3.14, True)

2. 튜플의 특징

순서가 있음: 튜플의 요소는 순서가 있으며, 인덱스를 통해 접근할 수 있습니다.
변경 불가능함 (Immutable): 튜플의 요소는 한 번 생성되면 변경할 수 없습니다.
다양한 데이터 타입 허용: 튜플은 문자열, 숫자, 불리언 등 다양한 데이터 타입을 포함할 수 있습니다.
중복 요소 허용: 튜플은 중복된 요소를 가질 수 있습니다.

3. 튜플 생성 및 기본 사용법

튜플 생성

튜플은 소괄호 () 또는 tuple() 함수를 사용하여 생성합니다. 요소가 하나인 튜플을 생성할 때는 뒤에 쉼표 ,를 추가해야 합니다. 삽입된 요소 즉, 데이터에 변경이 불가하므로 무결성 유지가 중요시되는 데이터에 사용합니다.

  • 무결성: 데이터에 어떤 작업 등의 이유로 정확성, 일관성 등이 손상되지 않고 믿을만한 상태
# 요소가 없는 튜플
empty = () # or tuple()

# 요소가 여러 개 있는 튜플
fruits = ("apple", "banana", "cherry")

# 요소가 하나인 튜플
single_element_tuple = ("apple",)

# 괄호 없이도 생성 가능 (권장되지 않음)
numbers = 1, 2, 3

튜플 요소 접근

튜플의 요소는 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다. 이 점은 리스트와 유사합니다.

fruits = ("apple", "banana", "cherry")
print(fruits[0])  # 'apple' 출력
print(fruits[2])  # 'cherry' 출력

튜플 요소 수정

튜플은 불변(immutable)이므로 한 번 생성된 후에는 요소를 수정할 수 없습니다. 만약 수정이 필요하다면 리스트로 변환하여 수정한 후 다시 튜플로 변환해야 합니다.

fruits = ("apple", "banana", "cherry")

# 튜플을 직접 수정(불가)
# fruits[1] = "blueberry" # error

# 튜플을 리스트로 변환하여 수정
fruits_list = list(fruits)
fruits_list[1] = "blueberry"
fruits = tuple(fruits_list)

print(fruits)  # ('apple', 'blueberry', 'cherry') 출력

4. 튜플 다양한 작업

튜플을 통해 다양한 작업을 수행할 수 있습니다. 길이 확인이나, 포함 여부 등은 실제 여러분이 개발을 수행하실 때도 유용하게 또 자주 사용하실 수 있는 기능입니다.

  • 튜플 길이 확인: len(tuple) 함수 사용
  • 특정 값 포함 여부 확인: in 연산자 사용
  • 튜플 연결: + 연산자 사용
  • 튜플 반복: for 루프 사용
fruits = ("apple", "banana", "cherry")

# 과일 갯수 출력
print(f"{len(fruits)}개의 과일이 있습니다.")

# 특정 값 포함 여부 확인
if "apple" in fruits: 
  print("사과가 있습니다")

# 튜플 연결
new_fruits = ("pear", "grape")
total_fruits = fruits + new_fruits # ("apple", "banana", "cherry", "pear", "grape")

# 튜플 반복
for fruit in total_fruits: 
  print(f"{fruit} 이 있습니다.") # "apple", "banana", "cherry", "pear", "grape" 이 출력

5. 튜플의 활용 예제

예제 1: 여러 변수에 한 번에 값 할당

튜플을 사용하면 여러 변수를 한 번에 선언하고 값을 할당할 수 있습니다. 이러한 방법을 튜플 언패킹(tuple unpacking)이라고 합니다. 이러한 단어나 용어들을 한번씩 보아두시면 개발자간의 소통을 하거나 하는 등에 도움이 되실 것입니다. ㅎㅎㅎ

a, b, c = (1, 2, 3)
print(a)  # 1 출력
print(b)  # 2 출력
print(c)  # 3 출력

예제 2: 함수에서 여러 값 반환

튜플을 사용하여 함수에서 여러 값을 반환할 수 있습니다. 앞서 예제 1과 유사한 방법으로 함수의 반환값에 대해 튜플 언패킹을 수행하는 것입니다.

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

name, age = get_name_and_age()
print(name)  # 'Alice' 출력
print(age)  # 30 출력

예제 3: 튜플의 불변성 활용

튜플의 불변성 덕분에 데이터의 변경을 방지해야 하는 경우에 유용합니다.

months = ("January", "February", "March", "April", "May", "June",
          "July", "August", "September", "October", "November", "December")

# months[0] = "Jan"  # 오류 발생: 튜플은 변경 불가능

결론

마지막으로 리스트와 튜플의 차이점에 대해 간단하게 정리하고 마무리하겠습니다.

특징 리스트 (List) 튜플 (Tuple)
변경 가능 여부 변경 가능 (Mutable) 변경 불가능 (Immutable)
정의 대괄호 [] 사용 소괄호 () 사용
메소드 다양한 메소드 제공 (append, remove 등) 제한된 메소드 제공 (count, index)
  • 튜플은 불변성이 필요한 경우에 유용하며, 리스트는 데이터의 수정, 추가, 삭제가 필요한 경우에 적합.

다시 한번 강조하지만 파이썬의 튜플은 순서가 있는 불변의 데이터 구조로, 한 번 생성되면 변경할 수 없습니다(튜플의 가장 큰 특징이므로 기억하셨으면 하는 마음에 오늘 포스팅에서 여러 번 반복하였습니다). 튜플은 리스트와 유사하지만, 불변성 덕분에 데이터의 안전성을 보장하는 데 유용합니다. 튜플의 특성과 사용 방법을 잘 이해하고 적절한 상황에서 활용하여 프로그래밍을 해보시길 바라겠습니다.

감사합니다!

반응형