[포스코 신재생에너지 IoT 개발자 5기] Python 5편 — 튜플

Doohee·2025년 11월 23일
post-thumbnail

튜플(tuple)은 파이썬의 기본 시퀀스 자료형 중 하나로,

리스트와 유사한 구조를 가지지만 값을 변경할 수 없는 불변(immutable) 특성이 가장 큰 구분점이다.

이 문서는 튜플의 정의, 표기법, 언패킹, 불변성, 연산, 메서드와 함께 종합 실습을 포함해

튜플을 명확하게 이해할 수 있도록 기술문서 형식으로 정리하였다.

1. 튜플(Tuple)

1) 튜플의 정의

  • 여러 개의 값을 하나의 변수에 저장

  • 순서 유지(index) 가능: 튜플은 요소의 입력 순서를 그대로 기억함

  • 불변(immutable) 자료형: 튜플은 생성 후 내부 값을 변경하거나 삭제할 수 없는 구조를 가진다.

  • 중복 허용: 튜플은 동일한 값을 여러번 가질 수 있음

✔ 리스트와 거의 동일하게 인덱싱/슬라이싱이 가능하지만, 값이 변하지 않는 특성 덕분에 데이터 보호와 정합성 유지에 유리하다.

2) 튜플 표기법

  • 일반적으로 소괄호 ()를 사용하여 생성

  • 쉼표만으로 생성할 수도 있으나, 명확성을 위해 괄호 사용 권장

tuple_1

단일 요소 튜플

요소가 하나일 경우 반드시 쉼표(,)를 붙여야 튜플로 인식된다.
괄호만 사용하면 단순 괄호 연산으로 처리되어 int가 된다.

tuple_2

2. 언패킹(Unpacking)

1) 언패킹의 정의

  • 시퀀스에 저장된 여러 값을 여러 변수에 한 번에 나누어 담는 문법

  • 좌변 변수 개수 = 우변 요소 개수

  • 개수 일치 시 각각 대응되는 값이 할당됨

  • 개수 불일치 ⇒ ValueError

  • 문자열, 리스트, 튜플 등 모든 시퀀스에 적용가능

2) 언패킹 예시(문자열, 리스트, 튜플)

tuple_3

3. 튜플 VS 리스트

tuple_4

✔ 튜플은 “변경되지 않는 고정 데이터 묶음”을 다룰 때 적합하다.
특히 설정값이나 좌표값, 변경이 발생하면 안 되는 정적 데이터에 사용된다.

4. 인덱싱과 슬라이싱

tuple_5

✔ 리스트, 문자열과 동일한 문법을 사용한다.

5. 튜플 연산

1) 튜플 연산 - 연결(+)

tuple_6

✔ 두 튜플을 이어 붙여 새로운 튜플을 반환한다.

2) 튜플 연산 - 반복(*)

tuple_7

✔ 튜플의 요소를 반복하여 새로운 튜플을 반환한다.

6. 튜플 메서드

1) 파이썬 내장 함수와 함께 사용

  • 튜플은 불변이므로 수정 기능을 가진 메서드는 없음, 그러나 읽기 전용 연산인 다음 함수들은 사용 가능:

tuple_8

2) 튜플 메서드(객체 제공)

  • 튜플 자체가 제공하는 메서드는 두 가지뿐이다.

    • count(x): x의 등장 횟수

    • index(x): x의 첫 등장 위치

tuple_9

7. 튜플의 불변성(Immutable)

  • 불변성(Immutable): 객체가 생성된 이후 내부 데이터를 변경할 수 없는 성질

  • 튜플 생성 후 요소 수정·추가·삭제 불가

  • 파이썬 공식 문서에도 명확히 언급

  • 튜플이 불변성이 주는 이점

    • 데이터 보호: 데이터가 외부로부터 변경되지 않도록 보장

    • 성능 최적화: 불변 객체는 메모리 효율성과 속도 면에서 유리함

    • 키(Key) 사용 가능: 딕셔너리의 키나 집합의 요소로 사용될 수 있음

8. 튜플 수정 / 삭제

1) 요소 수정 / 삭제 시 오류

  • 튜플 내부 요소를 수정, 삭제하려고 하면 TypeError 발생

tuple_10

2) 튜플 수정

  • 튜플의 값을 바꾸려면 새로운 튜플을 생성하여 재할당해야 한다.

tuple_11

3) 튜플 삭제

  • 튜플 자체(변수)는 삭제 가능하나, 내부 요소만 삭제하는 것은 불가능하다.

tuple_12

실습. 튜플 종합 연습

회원 정보 해킹 사고?! 고객 데이터 복구 작전

  • 당신은 한 스타트업의 데이터 엔지니어 입니다. 고객 정보 서버가 해킹을 당해 일부 정보가 손상되었습니다.

  • 다행히 튜플 혈태로 백업된 데이터가 남아 있으며, 이를 기반으로 정확한 정보를 복원하고 분석해야 합니다.

  • 튜플의 불변성과 언패킹, 탐색 기능을 적절히 활용하여 문제를 해결해보세요.

문제1. 손상된 고객 정보 복원하기

  • 해커가 고객 이름을 "unknown"으로 바꿔 버렸습니다.

  • 하지만 다행히 백업 파일에는 나이와 지역 정보가 그대로 남아있습니다.

  • 아래 고객의 이름을 "eunji"로 바꿔주세요.

    • user = ("minji", 25, "seoul")
  • 수정한 결과를 restored_user에 저장하고 출력하세요.

tuple_13

✔ 출력 결과

('eunji', 25, 'Seoul')

문제2. 고객 정보 언패킹하여 변수에 저장

  • 복원된 튜플을 통해 이름, 나이, 도시 정보를 각각 처리할 수 있도록 변수를 나누려 합니다.

  • restored_user를 언패킹 하여 name, age, city 변수에 저장하세요.

tuple_14

✔ 출력 결과

eunji
25
Seoul

문제3. 고객 데이터 통계 분석

  • 현재 고객 DB는 다음과 같습니다.

  • users = ("minji", "eunji", "soojin", "minji", "minji")

  • "minji" 라는 이름이 몇 번 등장하는지 출력하세요.

  • "soojin"이 처음 등장하는 위치(인덱스)를 출력하세요.

문제4. 고객 이름 정렬

  • 보고서 출력용으로 고객 이름을 가나다 순으로 정렬해야 합니다.

  • 단, 튜플은 변경 불가이므로 원본은 유지되어야 하며, 정렬 결과는 리스트 형태로 출력하세요.

  • user 튜플을 정렬한 결과를 sorted_users에 저장하고 출력하세요.

tuple_15

✔ 출력 결과

minji의 등장 횟수: 3번
soojin의 처음 등장하는 인덱스 위치: 2번
가나다 순 정렬: ['eunji', 'minji', 'minji', 'minji', 'soojin']

9. 튜플이 실무에서 활용되는 이유

튜플은 불변성(Immutable) 덕분에 데이터의 안정성과 예측 가능성을 보장한다.

이 특성 때문에 실무에서는 다음 용도로 자주 사용된다.

  • 파이썬 함수는 여러 값을 반환하는 것처럼 보이지만, 실제로는 튜플 하나로 반환한다.

  • 변경되면 안 되는 정적 데이터(설정값, 좌표, 옵션 등)를 안전하게 보관할 수 있다.

  • 불변 객체이기 때문에 딕셔너리의 키(key) 로 사용할 수 있다.

  • 리스트를 읽기 전용으로 잠시 보호해야 할 때 tuple() 로 변환해 사용한다.

10. 튜플 한눈에 보기

  • 파이썬의 불변(Immutable) 시퀀스 자료형

  • 생성 후 요소 수정·삭제 불가

  • 순서 유지 → 인덱스, 슬라이싱 가능

  • 중복 허용

  • 언패킹·다중 할당에 활용

  • 변경이 필요하면 새 튜플 생성 후 재할당

  • 메서드는 count, index 2개

  • 내장 함수로 읽기 전용 처리 가능 (len, sorted, …)

“값이 변하면 안 되는 데이터” 를 다룰 때 적합.

11. 아웃트로

튜플은 파이썬의 시퀀스 자료형 중에서도 안정성과 정합성이 요구되는 상황에서 활용되는 핵심 구조다.

값이 변경될 수 없다는 특징은 오류 가능성을 줄이고, 데이터의 신뢰성을 강화한다.

튜플에 대한 이해는 이후 Set, Dictionary, 함수 반환 구조, 자료구조 설계의 기초가 되며,

데이터 분석 및 파이썬 실무 코드에서도 자주 활용되는 개념이다.

profile
에너지 기획 전문가로 성장하고자 합니다.

0개의 댓글