7강 / 20강
집합 — 순서도 중복도 없는 자루
무엇이 들었는지만 중요합니다
집합(set)은 서로 다른 것들의 모임입니다. 자루에 물건을 넣는다고 생각하세요. 자루를 흔들어도 내용물은 그대로고, 같은 사과를 두 번 넣어도 사과는 하나입니다.
이 세 가지가 리스트와의 결정적 차이입니다. 리스트는 순서가 있고 중복도 되지만, 집합은 "이게 들어 있나?"라는 단 하나의 질문에 특화되어 있어요.
기호도 알아 둡시다. 3 ∈ A 는 "3은 A의 원소이다",
3 ∉ A 는 "원소가 아니다"라고 읽습니다.
집합은 '무엇이 들었는가'만 기억합니다.
Python
브라우저에서 실행
🎮 자루에 직접 넣어 보세요
같은 원소를 두 번 넣어 보고, 순서를 바꿔 넣어 보세요. 몇 번을 넣어도 자루 안은 그대로라는 것이 집합의 성격입니다.
집합을 적는 두 가지 방법
- 원소나열법 —
A = {2, 4, 6, 8}. 원소가 적을 때. - 조건제시법 —
A = {x | x는 10 미만의 짝수}.|는 "단, 이런 조건"이라고 읽습니다. 원소가 많거나 무한할 때.
조건제시법은 파이썬의 내포(comprehension) 문법과 모양이 똑같습니다.
{x for x in range(10) if x % 2 == 0} — 수학 기호를 그대로 옮겨 놓았어요.
수학의 { x | 조건 } 이 파이썬에서는 { x for x in ... if 조건 } 입니다.
Python
브라우저에서 실행
부분집합 — 통째로 들어 있나
A ⊆ B 는 "A의 모든 원소가 B에도 있다"는 뜻입니다.
5강의 기호로 쓰면 ∀x (x ∈ A → x ∈ B) 예요 — 한정기호와 조건명제가 여기서 만납니다.
재미있는 사실 둘.
- 공집합은 모든 집합의 부분집합입니다. 어길 원소가 없으니까요 (공허한 참!).
- 원소가
n개인 집합의 부분집합 개수는 2n개입니다. 각 원소마다 "넣는다/뺀다" 두 가지를 고르니까요 — 2강의 진리표와 똑같은 계산이에요.
부분집합 전체를 모은 것을 멱집합(power set)이라 합니다.
Python
브라우저에서 실행
🤔 확인 문제
{1, 2, 2, 3, 1} 의 원소 개수는?해설 집합은 중복을 세지 않습니다. 서로 다른 원소는 1, 2, 3 — 3개예요. 몇 번 적었는지는 집합에게 아무 의미가 없습니다.
🤔 확인 문제
원소가 4개인 집합의 부분집합은 모두 몇 개일까요?
해설 각 원소마다 넣는다/뺀다 두 가지를 고르므로
2⁴ = 16개입니다. 공집합과 자기 자신도 부분집합에 포함돼요. 진리표의 줄 수와 정확히 같은 계산입니다.🤔 확인 문제
공집합 ∅ 에 대해 옳은 것은?
해설 "∅의 모든 원소가 A에 있다"는 어길 원소가 없으므로 언제나 참입니다 (공허한 참). 참고로
{∅}는 원소가 1개인 집합이라 ∅와 다릅니다.