4강 / 20강
튜플과 집합 — 못 바꾸는 묶음, 중복 없는 주머니
리스트 말고 다른 그릇이 필요한 순간
리스트 하나로 다 될 것 같은데, 파이썬은 왜 튜플과 집합을 따로 두었을까요?
부엌을 떠올려 보세요. 냄비 하나로 국도 끓이고 라면도 끓일 수 있지만, 프라이팬이 있으면 훨씬 나은 일이 있습니다. 자료구조도 똑같아요. 문제에 맞는 그릇을 고르면 코드가 짧아지고, 빨라지고, 실수가 줄어듭니다.
| 그릇 | 모양 | 순서 | 바꿀 수 있나 | 중복 |
|---|---|---|---|---|
| 리스트 | [1, 2, 3] | 있음 | ✅ 예 | 허용 |
| 튜플 | (1, 2, 3) | 있음 | ❌ 아니오 | 허용 |
| 집합 | {1, 2, 3} | 없음 | ✅ 예 | ❌ 자동 제거 |
일부러 오류를 냅니다. TypeError 메시지를 읽어 보세요.
Python
브라우저에서 실행
함수가 값을 두 개 돌려줄 수 있는 이유가 바로 튜플입니다.
Python
브라우저에서 실행
집합 — 같은 것을 두 번 넣을 수 없는 주머니
동아리 지원자 명단을 받았는데 같은 사람이 세 번 적혀 있다면? 리스트로는 일일이 비교해야 하지만, 집합에 넣으면 저절로 하나만 남습니다.
중복 제거는 집합의 특기입니다.
Python
브라우저에서 실행
집합 연산 — 수학 시간의 벤 다이어그램 그대로입니다.
Python
브라우저에서 실행
🎮 "안에 있나?" 속도 대결
집합의 진짜 무기는 중복 제거가 아니라 속도입니다.
x in 리스트 는 처음부터 하나씩 비교하지만,
x in 집합 은 개수와 상관없이 즉시 답합니다.
아래에서 직접 재 보세요. 원리는 13강 해시 테이블에서 밝혀집니다.
20만 개에서 하나 찾기. 직접 재 봅니다.
Python
브라우저에서 실행
🤔 확인 문제
절대 바뀌면 안 되는 값 (예: 학교의 위도·경도)을 담기에 가장 알맞은 것은?
해설 튜플은 만든 뒤 바꿀 수 없습니다. 실수로 고치려 하면 파이썬이 TypeError로 막아 줘요. 값이 짝지어 다니고 변하지 않는다면 튜플이 정답입니다.
🤔 확인 문제
set([3, 1, 3, 2, 1]) 의 원소 개수는?해설 집합은 중복을 자동으로 없앱니다 →
{1, 2, 3} 으로 3개. 순서는 보장되지 않습니다.🤔 확인 문제
100만 개 중에 특정 값이 있는지 수없이 반복해서 확인해야 합니다. 무엇을 쓸까요?
해설
in 검사는 집합이 압도적입니다. 리스트는 최악의 경우 100만 번 비교하지만 집합은 한 번에 위치를 계산해 냅니다 (13강 해시 테이블).