4강 / 20강

튜플과 집합 — 못 바꾸는 묶음, 중복 없는 주머니

리스트 말고 다른 그릇이 필요한 순간

튜플과 집합 — 못 바꾸는 묶음, 중복 없는 주머니
튜플은 봉인된 상자, 집합은 같은 것을 두 번 넣을 수 없는 주머니.

리스트 하나로 다 될 것 같은데, 파이썬은 왜 튜플과 집합을 따로 두었을까요?

부엌을 떠올려 보세요. 냄비 하나로 국도 끓이고 라면도 끓일 수 있지만, 프라이팬이 있으면 훨씬 나은 일이 있습니다. 자료구조도 똑같아요. 문제에 맞는 그릇을 고르면 코드가 짧아지고, 빨라지고, 실수가 줄어듭니다.

그릇모양순서바꿀 수 있나중복
리스트[1, 2, 3]있음✅ 예허용
튜플(1, 2, 3)있음❌ 아니오허용
집합{1, 2, 3}없음✅ 예❌ 자동 제거
일부러 오류를 냅니다. TypeError 메시지를 읽어 보세요.
Python 브라우저에서 실행
함수가 값을 두 개 돌려줄 수 있는 이유가 바로 튜플입니다.
Python 브라우저에서 실행

집합 — 같은 것을 두 번 넣을 수 없는 주머니

동아리 지원자 명단을 받았는데 같은 사람이 세 번 적혀 있다면? 리스트로는 일일이 비교해야 하지만, 집합에 넣으면 저절로 하나만 남습니다.

중복 제거는 집합의 특기입니다.
Python 브라우저에서 실행
집합 연산 — 수학 시간의 벤 다이어그램 그대로입니다.
Python 브라우저에서 실행

🎮 "안에 있나?" 속도 대결

집합의 진짜 무기는 중복 제거가 아니라 속도입니다. x in 리스트 는 처음부터 하나씩 비교하지만, x in 집합 은 개수와 상관없이 즉시 답합니다. 아래에서 직접 재 보세요. 원리는 13강 해시 테이블에서 밝혀집니다.

리스트 vs 집합 — 포함 검사 속도를 실제로 측정합니다
불러오는 중…
20만 개에서 하나 찾기. 직접 재 봅니다.
Python 브라우저에서 실행
🤔 확인 문제
절대 바뀌면 안 되는 값 (예: 학교의 위도·경도)을 담기에 가장 알맞은 것은?
🤔 확인 문제
set([3, 1, 3, 2, 1]) 의 원소 개수는?
🤔 확인 문제
100만 개 중에 특정 값이 있는지 수없이 반복해서 확인해야 합니다. 무엇을 쓸까요?