[파이썬 자료구조] 튜플 Tuple

서대철·2023년 7월 20일
0

파이썬에서 튜플은 순서가 있는, 변경이 불가능한 요소들의 모음입니다. 튜플은 리스트와 매우 유사하지만, 튜플은 한 번 생성되면 수정할 수 없다는 점이 다릅니다. 이러한 불변성은 데이터의 무결성을 보장하고 실수로 발생하는 변경을 방지하는데 유용합니다.

튜플은 괄호 ()를 사용하여 정의하며, 정수, 실수, 문자열 또는 다른 튜플과 같은 다양한 데이터 유형의 요소를 포함할 수 있습니다. 한번 튜플이 생성되면 그 안의 요소들은 변경되거나 추가되거나 삭제될 수 없습니다.

더 쉽게 이해하기 위해 몇 가지 예시를 살펴봅시다:

튜플 생성:

# 빈 튜플
empty_tuple = ()

# 요소를 포함하는 튜플
fruit_tuple = ('사과', '바나나', '오렌지', '포도')
mixed_tuple = ('사과', 42, 3.14, True)
random_tuple = 'apple', '444', '안녕' 

리스트와는 다르게, 소괄호를 생략할 수 있습니다(random_tuple).

튜플의 요소에 접근:

fruit_tuple = ('사과', '바나나', '오렌지', '포도')

# 개별 요소에 접근
print(fruit_tuple[0])  # 출력: '사과'
print(fruit_tuple[2])  # 출력: '오렌지'

# 음수 인덱싱
print(fruit_tuple[-1])  # 출력: '포도'

튜플 언패킹:
튜플 언패킹(또는 튜플 언패킹 할당 또는 다중 할당)은 파이썬의 기능으로, 한 줄의 코드로 튜플의 요소를 여러 변수에 할당할 수 있게 해줍니다. 이를 위해서는 할당문의 왼쪽에 튜플의 요소 수와 동일한 개수의 변수를 제공해야 합니다.

# 튜플의 요소들을 각각의 변수로 언패킹
point = (3, 5)
x, y = point
print(x)  # 출력: 3
print(y)  # 출력: 5

튜플 슬라이싱:

fruit_tuple = ('사과', '바나나', '오렌지', '포도', '키위')

# 인덱스 1부터 3까지 슬라이싱 (3은 포함되지 않음)
sliced_tuple = fruit_tuple[1:3]
print(sliced_tuple)  # 출력: ('바나나', '오렌지')

튜플 연결하기:

tuple1 = ('a', 'b', 'c')
tuple2 = (1, 2, 3)

# 두 튜플을 연결
combined_tuple = tuple1 + tuple2
print(combined_tuple)  # 출력: ('a', 'b', 'c', 1, 2, 3)

튜플의 요소를 다른 튜플에 연결하기:

# Define two tuples
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

# Create an empty list to store the results
result = []

# Iterate through the elements of tuple1
for element in tuple1:
    # Add each element from tuple1 to tuple2
    tuple2 += (element,)

# Append the modified tuple2 to the result list
result.append(tuple2)

print(result)  # Output: [(4, 5, 6, 1, 2, 3)]

(리스트와는 달리 extend 함수를 쓸 수는 없습니다.)

튜플의 길이와 특정 요소의 개수:

numbers = (2, 4, 6, 8, 2, 2)

# 튜플의 길이
print(len(numbers))  # 출력: 6

# 특정 요소의 개수 세기
print(numbers.count(2))  # 출력: 3

리스트 대신 튜플을 써야 하는 상황은?
튜플은 프로그램 실행 도중에 변경되지 않고 일정하게 유지되어야 하는 항목들의 모음을 저장할 때 사용됩니다. 다음은 튜플을 리스트 대신 사용해야 하는 경우의 몇 가지 예시입니다:

  1. 데이터 무결성: 튜플은 변경할 수 없으므로 생성 후에 그 요소들을 수정, 추가, 삭제할 수 없습니다. 이 특성은 데이터가 변경되지 않고 무결함을 유지하는 데 도움이 됩니다. 실수로 데이터를 변경하지 않아야 하는 경우에는 튜플을 사용하는 것이 좋습니다.

  2. 빠른 접근: 튜플은 변경할 수 없으므로 크기가 고정되어 있고, 리스트에 비해 요소에 빠르게 접근할 수 있습니다. 이 성능 이점은 대용량 데이터나 성능 중요한 응용 프로그램에서 중요합니다.

  3. 딕셔너리 키로 사용 가능: 튜플은 해시 가능하므로 딕셔너리 키로 사용할 수 있습니다. 리스트는 변경 가능하므로 딕셔너리 키로 사용할 수 없습니다. 값들의 쌍이나 고유한 항목을 식별해야 하는 경우 튜플을 사용하면 매우 유용합니다.

  4. 함수 인수 및 반환 값: 튜플은 함수에서 여러 값을 반환하거나 함수 인수로 전달하는 데 자주 사용됩니다. 함수는 여러 값을 포함하는 튜플을 반환하고, 이 튜플을 언패킹하여 개별 변수에 할당할 수 있습니다.

  5. 시퀀스 매칭: 때로는 튜플 언패킹을 사용하여 시퀀스의 항목들을 변수와 일치시키는 데 사용할 수 있습니다. 특히 중첩된 데이터 구조를 다룰 때 유용합니다.

  6. 데이터 불변성: 함수형 프로그래밍과 같은 특정 프로그래밍 패러다임에서는 불변성을 선호하는 경우가 있습니다. 튜플은 이러한 불변성을 강제하는 데 도움이 됩니다.

하지만 자주 수정, 추가, 삭제해야 하는 경우에는 리스트가 더 적합합니다. 리스트는 동적으로 변경할 수 있는 더 유연한 데이터 구조이며, 튜플은 데이터 무결성과 불변성을 보장해야 하는 경우에 더 적합합니다.

요약하면, 변경되지 않고 일정한 데이터 모음을 저장해야 할 때는 튜플을 사용하고, 동적으로 수정할 수 있는 데이터 구조가 필요한 경우는 리스트를 사용하세요.

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기