본문 바로가기
Language/Python

[고등학생부터, 파이썬] 11. 튜플(Tuple)과 세트(Set)

by kellis 2026. 8. 20.
반응형
고등학생부터, 파이썬 · 11화

튜플(Tuple)과 세트(Set) — 리스트와는 다른 두 자료구조

지난 화의 리스트에 이어,

값을 한 번 저장하면 바꿀 수 없는 튜플과 중복을 허용하지 않는 세트를 배웁니다. 리스트와 무엇이 다른지, 각각 언제 쓰면 좋은지 비교하며 정리해요.

이 시리즈를 시작하며

요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠. 

개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.

이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.

 

고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.

중간중간 빈칸 채우기학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.

Chapter 26
튜플(Tuple)

튜플(Tuple)은 리스트처럼 여러 개의 데이터를 하나로 저장하는 자료구조입니다. 리스트와 매우 비슷하지만 결정적인 차이가 하나 있습니다. 튜플은 한 번 만들면 값을 바꿀 수 없습니다.

선생님 설명

리스트는 연필로 쓰는 메모장입니다. 바꾸고 싶으면 지우개로 지우고 고칠 수 있어요. 튜플은 볼펜으로 쓴 계약서입니다. 한 번 작성하면 내용을 수정할 수 없습니다.

 

  기호 예시
리스트 [ ] fruits = ["사과", "바나나", "포도"]
튜플 ( ) fruits = ("사과", "바나나", "포도")

대괄호 [] 대신 소괄호 ()를 쓴다는 점만 빼면, 사용법은 리스트와 거의 같습니다.

예제 · 좌표 저장하기
python
point = (100, 200)

print("x :", point[0])
print("y :", point[1])
실행 결과
x : 100
y : 200

인덱스로 값을 꺼내는 것, len()으로 길이를 구하는 것, for로 순회하는 것 — 전부 리스트와 똑같이 동작합니다.

값을 수정하려고 하면?
python
numbers = (10, 20, 30)
numbers[0] = 100
실행 결과
TypeError: 'tuple' object does not support item assignment

오류가 발생합니다. 튜플은 변하지 않는 데이터를 저장하려고 만들어졌기 때문입니다. 좌표, RGB 색상, 생년월일, 시험 날짜처럼 프로그램이 실행되는 중에 절대 바뀌면 안 되는 데이터를 저장할 때 사용합니다. 이를 불변성(Immutable)이라고 하며 개발에 있어 굉장히 중요한 개념이지만 여기서는 이정도만 보고 넘어가겠습니다.

항목 리스트 튜플
순서 O O
중복 O O
수정 / 추가 / 삭제 O X
빈칸 채우기
  1. 튜플을 만드는 기호를 쓰시오.
  2. 다음 코드가 20을 출력하도록 빈칸을 채우시오.
    python
    point = (10, 20)
    print(point[])
정답
1. ( )
2. 1
학교 시험 유형
  1. 리스트와 튜플의 가장 큰 차이점을 서술하시오.
  2. 다음 코드의 실행 결과를 작성하시오.
    python
    numbers = (3, 6, 9)
    print(numbers[2])
정답
1. 리스트는 값을 자유롭게 수정·추가·삭제할 수 있지만, 튜플은 한 번 만들면 값을 바꿀 수 없습니다.

2. 9

 

Chapter 27
세트(Set)

세트(Set)는 중복을 허용하지 않고, 순서가 존재하지 않는 자료구조입니다.

선생님 설명

학생 명단에 "김철수, 이영희, 박민수, 김철수, 이영희"처럼 같은 사람이 두 번 적혀 있다고 해봅시다. 중복 없이 정리하면 "김철수, 이영희, 박민수"가 되죠. 세트도 똑같습니다. 같은 값은 한 번만 저장합니다.

기본 문법
python
변수 = {값1, 값2, 값3}
예제 · 중복이 사라지는 세트
python
numbers = {1, 2, 2, 3, 3, 3, 4}
print(numbers)
실행 결과
{1, 2, 3, 4}
순서가 없습니다

리스트는 fruits = ["사과", "바나나", "포도"]처럼 만들면 항상 첫 번째가 "사과"였습니다. 하지만 세트는 만들 때 적은 순서와 출력 순서가 다를 수 있습니다. 그래서 인덱스(fruits[0])도 사용할 수 없어요. 애초에 "몇 번째"라는 개념 자체가 없기 때문입니다.

예제 · 값 추가·삭제하기
python
numbers = {1, 2, 3}
numbers.add(4)
print(numbers)

fruits = {"사과", "바나나", "포도"}
fruits.remove("바나나")
print(fruits)
실행 결과 (세트는 출력 순서가 달라질 수 있어요)
{1, 2, 3, 4}
{'사과', '포도'}
리스트 → 세트로 바꿔서 중복 제거하기

세트가 가장 많이 쓰이는 상황 중 하나가 중복 제거입니다. 리스트를 세트로 바꾸기만 해도 중복이 자동으로 사라져요.

python
numbers = [1, 2, 2, 3, 4, 4, 5]
numbers = set(numbers)
print(numbers)
실행 결과
{1, 2, 3, 4, 5}

다시 리스트로 되돌리고 싶다면 numbers = list(numbers)를 쓰면 됩니다.

항목 리스트 세트
순서 / 인덱스 O X
중복 O X
값 추가 append() add()
값 삭제 remove(), pop() remove()
자주 하는 실수 · {}는 세트일까요, 딕셔너리일까요

{}만 써서 빈 세트를 만들려고 하면 안 됩니다. numbers = {}는 빈 딕셔너리가 됩니다. 빈 세트를 만들려면 반드시 numbers = set()이라고 써야 해요. (딕셔너리는 다음 화에서 배워요.)

정리하면 — 리스트는 순서가 중요하고 계속 값이 바뀔 때, 튜플은 절대 바뀌면 안 되는 값을 저장할 때, 세트는 중복 없이 관리해야 할 때 사용합니다.

코드 읽기
  1. 다음 코드의 실행 결과를 작성하시오.
    python
    numbers = {1, 2, 2, 3}
    print(len(numbers))
정답
3 — 중복된 2는 하나만 저장되어 {1, 2, 3}이 되므로 길이는 3입니다.
학교 시험 유형
  1. 세트(Set)의 두 가지 특징을 서술하시오.
  2. 다음 코드의 실행 결과를 작성하시오.
    python
    numbers = {1, 2, 3}
    numbers.add(2)
    print(len(numbers))
정답
1. 순서가 없고(인덱스로 접근 불가), 같은 값을 중복해서 저장할 수 없습니다.

2. 3 — 이미 있는 값 2를 다시 추가해도 세트에는 변화가 없습니다.
다음 화 예고 — 12화에서는 데이터를 이름(Key)과 값(Value)의 한 쌍으로 저장하는 딕셔너리(Dictionary)를 배웁니다. 리스트의 인덱스 대신 이름으로 데이터를 찾는 방법을 정리해볼게요.
반응형

댓글