A ⊆ B 是什么意思?为什么空集是任何集合的子集?
学完这节课,你将能够:
👆 点击按钮把元素放入集合 A、集合 B 或交集(共同元素)区域。观察:什么时候 A ⊆ B 成立?什么时候 A = B?
| 操作 | A | B | 关系 |
|---|
刚才的游戏中,我们往集合 A 和 B 里放元素。仔细想想:
如果集合 A 中的每一个元素都是集合 B 的元素,那么称 A 是 B 的子集,记作 A ⊆ B。
如果集合 A 有 n 个元素:
给出集合 A 和 B,判断它们的关系。⚠️ 💡 💡 记住:A ⊆ B 要求 A 的每个元素都在 B 中。
# 子集判断 A = {1, 2} B = {1, 2, 3} # A ⊆ B ? print(A <= B) # True (A是B的子集) print(A < B) # True (A是B的真子集) print(A == B) # False # 求所有子集 def subsets(s): items = list(s) result = [] for i in range(2 ** len(items)): sub = {items[j] for j in range(len(items)) if i & (1<<j)} result.append(sub) return result print(subsets({1,2,3})) # 8个子集
True
True
False
[set(), {1}, {2}, {1,2}, {3}, {1,3}, {2,3}, {1,2,3}]
# 验证子集个数公式:2^n def count_subsets(n): """n个元素的集合,子集个数为2^n""" return 2 ** n for n in range(1, 6): items = set(range(1, n+1)) cnt = count_subsets(n) print(f'n={n}: 子集个数 = 2^{n} = {cnt}') # 真子集 = 子集 - 1(去掉自身) # 非空子集 = 子集 - 1(去掉空集) # 非空真子集 = 子集 - 2(去掉自身和空集)
n=1: 子集个数 = 2^1 = 2 n=2: 子集个数 = 2^2 = 4 n=3: 子集个数 = 2^3 = 8 n=4: 子集个数 = 2^4 = 16 n=5: 子集个数 = 2^5 = 32