본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] 튜플(Tuple), 리스트(List)와 비교해서

by forSilver 2024. 7. 1.
반응형

튜플(Tuple)

튜플(Tuple)은 파이썬에서 사용하는 데이터 타입 중 하나로, 여러 개의 값을 하나의 변수에 저장할 수 있는 자료구조입니다. 튜플은 리스트와 비슷하지만, 몇 가지 중요한 차이점이 있습니다.

튜플의 특징

  1. 변경 불가능 (Immutable): 튜플의 가장 큰 특징은 한 번 생성되면 값을 변경할 수 없다는 점입니다. 리스트는 값의 추가, 삭제, 변경이 가능하지만, 튜플은 이러한 작업이 불가능합니다.
  2. 순서가 있다 (Ordered): 튜플은 값들이 저장된 순서를 유지합니다. 따라서 인덱스를 통해 특정 위치의 값을 접근할 수 있습니다.
  3. 중복 허용 (Allow Duplicates): 튜플 내에 동일한 값을 여러 번 가질 수 있습니다.
  4. 다양한 데이터 타입 저장 가능 (Heterogeneous): 튜플은 정수, 문자열, 리스트 등 서로 다른 데이터 타입을 함께 저장할 수 있습니다.

튜플의 생성

튜플을 생성하는 방법은 간단합니다. 소괄호 ()를 사용하거나 콤마 ,로 값을 구분하여 생성할 수 있습니다.

# 소괄호를 사용한 튜플 생성
tuple1 = (1, 2, 3)

# 콤마로 구분하여 생성
tuple2 = 1, 2, 3

# 하나의 요소를 가진 튜플 생성 (콤마가 필요)
tuple3 = (1,)

# 빈 튜플 생성
empty_tuple = ()

튜플의 접근

튜플의 값은 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다.

my_tuple = (10, 20, 30, 40, 50)

print(my_tuple[0])  # 10
print(my_tuple[2])  # 30

# 음수 인덱스 사용 (뒤에서부터 접근)
print(my_tuple[-1])  # 50
print(my_tuple[-3])  # 30

튜플의 연산

튜플은 리스트와 유사하게 여러 가지 연산을 지원합니다. 하지만 튜플은 불변이기 때문에 리스트와 달리 값을 변경할 수는 없습니다.

# 튜플 병합
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
merged_tuple = tuple1 + tuple2
print(merged_tuple)  # (1, 2, 3, 4, 5, 6)

# 튜플 반복
repeated_tuple = tuple1 * 3
print(repeated_tuple)  # (1, 2, 3, 1, 2, 3, 1, 2, 3)

튜플의 연산

튜플의 사용 예시

튜플은 주로 변경되지 않아야 하는 데이터를 그룹화할 때 사용됩니다. 예를 들어, 함수에서 여러 개의 값을 반환할 때 사용하거나, 고정된 데이터 구조를 표현할 때 유용합니다.

함수에서 여러 값 반환

def get_student_scores():
    return (95, 85, 77)

math, science, english = get_student_scores()
print(math)     # 95
print(science)  # 85
print(english)  # 77

함수에서 여러 값 반환

딕셔너리의 키로 사용

튜플은 변경 불가능하기 때문에 딕셔너리의 키로 사용할 수 있습니다. 리스트는 변경 가능하기 때문에 키로 사용할 수 없습니다.

location = {
    (37.5665, 126.9780): "Seoul",
    (35.6895, 139.6917): "Tokyo"
}

print(location[(37.5665, 126.9780)])  # Seoul

딕셔너리 키로 사용된 튜플

튜플과 리스트의 비교

특징 튜플 (Tuple) 리스트 (List)
가변성 불변 (Immutable) 가변 (Mutable)
선언 방법 소괄호 () 또는 콤마 , 대괄호 []
사용 예시 변경되지 않아야 하는 데이터 그룹화 데이터의 추가, 삭제, 변경이 필요할 때

 

튜플은 데이터의 불변성을 보장할 때 유용하고, 리스트는 데이터의 가변성을 활용할 때 적합합니다. 이 두 가지 자료구조를 상황에 맞게 활용하면 더 효과적인 파이썬 프로그래밍이 가능합니다.