Python에서의 Tuple

Ruah·2024년 9월 15일

theory

목록 보기
7/11

Tuple이란?

튜플은 변경 불가능한(immutable) 순서가 있는 시퀀스(sequence) 자료형.
List와 비슷하게 여러 요소를 저장가능하지만, 한번 생성된 튜플의 요소들은 변경 불가 하고, 데이터의 무결성을 보장 한다.
List와 달리 튜플은 ()소괄호로 이루어져있다.

Tuple 사용 이유

1. 변경되지 않아야 하는 데이터 저장

  • 데이터의 무결성을 보장해야 할 때 사용 - 안전성
  • 좌표값, 설정 값등

2. 딕셔너리의 키로 사용

  • 튜플은 변경 불가능하므로 해시 가능(immutable and hashable)함.
  • List는 변경이 가능하여 딕셔너리의 키로 사용 불가.

3. 성능 향상

  • 리스트 보다 생성 속도가 빠름.

언제 Tuple을 사용해야 할까?

1. 변경될 필요가 없는 데이터

  • 요일, 월 이름, 좌표 등

2. 데이터의 무결성이 중요할 때

  • 데이터가 실수로 변경되는 것을 방지하고자 할때

3. 딕셔너리의 키로 사용해야할 때

  • 복합적인 키를 만들기 위해 여러 값을 묵어서 사용

4. 함수의 복수 반환값 처리

  • 여러 값을 한꺼번에 반환하고자 할때

Tuple의 특징

Immutable(변경 불가)

  • 생성후 변경 불가
  • 요소의 추가, 삭제, 수정 불가

Ordered Sequence

  • 요소들은 삽입된 순서를 유지
  • 인덱싱과 슬라이싱을 통해 요소에 접근 가능

다양한 데이터 타입 저장 가능

  • 튜플은 정수, 문자열, 리스트, 다른 튜플 등 다양한 데이터 타입의 요소를 함께 저장 가능.
  • 예 )
(1, 'apple', 3.14, [4, 5])

Nested(중첩가능)\

  • 튜플의 요소로 다른 튜플이나 리스트 포함 가능
  • 예)
((1, 2), (3, 4), (5, 6))

메모리 효율성

  • 변경이 불가능하므로 리스트 보다 메모리 사용이 효울적
  • 해시 가능성(Hashable)을 갖는 경우가 많아 딕셔너리의 키로 사용가능

Tuple 생성 방법

소괄호 사용

my_tuple = (1, 2, 3)

콤마 사용

my_tuple = 1, 2, 3

빈 튜플 생성

empty_tuple = ()

요소가 하나인 튜플 생성

  • 요소가 하나인 튜플을 생성할때는 반드시 콤마를 추가해야한다.
single_element_tuple = (1, )

# 튜플 불가
not_a_tuple = (1)

튜플의 기본 연산

Indexing(인덱싱)

my_tuple = ('a', 'b', 'c', 'd')
print(my_tuple[0])    # 출력 : 'a' - 첫번재 요소
print(my_tuple[-1])   # 출력 : 'd' - 마지막 요소

Slicing(슬라이싱)

# 인덱스 1부터 2까지의 요소를 추출하여 sub_tuple에 저장
sub_tuple = my_tuple[1:3]   # ('b', 'c')

튜플 병합 및 반복

# 튜플 병합
tuple1 = (1, 2)
tuple2 = (3, 4)
combined = tuple1 + tuple2  # (1, 2, 3, 4)

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

튜플 내장 함수

print(len(my_tuple)) # 요소 개수

# 특정값 존재여부
print('a' in my_tuple) # True

#최대값, 최소값 (요소들이 비교 가능해야함.)
numbers = (1, 5, 3)
print(max(numbers)) # 5 출력
print(min(numbers)) # 1 출력

Tuple의 packing과 unpacking

  • 여러값을 하나의 튜플로 묶거나 (tuple packing), 튜플의 요소를 여러 변수에 나눠담는 것(unpacking)이 가능

packing

packed = 1, 2, 3 # (1, 2, 3)

unpacking

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


# unpaking시 불필요한 값 생략

unpacking시, 불필요한 값(-1, 0)들은 '_'을 사용해 생략 가능

x, , , y, z = (1, -1, 0, 2, 5)

- 1은 x에 , 2는 y, 5는 z에 담음
- -1과 0은 _에 할당하여 코드의 가독성을 높임.
#### unpacking  시에 * 를 사용하여 불필요한 값 생략

언패킹 시, 변수 중 하나에 *을 붙이면 남은 요소 전체를 리스트에 담기

a, *b, c = (10, 20, 30, 40, 50)


- a = 10 
- b = [20, 30, 40] # 중간의 모든 값을 리스트로 저장되어 변수 b에 저장됨..
- c = 50
- 활용 : 요소의 개수가 가변적일때, 나머지 값을 하나의 변수에 담아 처리.

profile
집요한 주니어 개발자의 호되게 당했던 기록

0개의 댓글