当前位置:首页>python>Python set 集合比较操作完整讲解

Python set 集合比较操作完整讲解

  • 2026-10-10 18:02:33
Python set 集合比较操作完整讲解

集合是无序、无重复元素的容器,核心特性:基于元素唯一性做集合关系判定,所有比较运算符最终判断两个集合的包含、相等、相交关系,返回布尔值 True/False。

一、先铺垫:集合基础

a = {1, 2, 3}
b = {1, 2, 3, 4}
c = {2, 3, 1}
d = {5, 6}

集合无序,a == c 结果为 True,元素相同即相等,和顺序无关。

二、六大比较运算符(常用)

1. == 等于 / != 不等于

判断两个集合元素完全一模一样,不关心顺序。

a = {1,2,3}
c = {3,1,2}
print(a == c)   # True,元素完全相同
print(a != b)   # True,元素有差异

2. < 真子集(严格子集)

A < B:A 所有元素都在 B 中,且 B 有 A 没有的元素数学表达:

print(a < b)  # True {1,2,3} 是 {1,2,3,4} 的真子集
print(b < a)  # False
print(a < c)  # False 元素完全相等,不满足严格小于

3. <= 子集(包含于)

A <= B:A 全部元素都在 B 中,允许两个集合完全相等 数学表达:

print(a <= b)  # True
print(a <= c)  # True 完全相等也成立

4. > 真超集(严格超集)

A > B:A 包含 B 全部元素,且 A 有额外元素 数学表达:

print(b > a)  # True
print(a > c)  # False

5. >= 超集(包含)

A >= B:A 包含 B 所有元素,允许相等 数学表达:

print(b >= a)  # True
print(c >= a)  # True

三、对应内置方法(功能和运算符等价,可读性更高)

运算符
等价方法
作用说明
A <= BA.issubset(B)
A 是 B 的子集
A < BA.issubset(B) and A != B
A 是真子集
A >= BA.issuperset(B)
A 是 B 的超集
A > BA.issuperset(B) and A != B
A 是真超集

示例:

print(a.issubset(b))    # True 等价 a <= b
print(b.issuperset(a))  # True 等价 b >= a

四、交集判断:是否有公共元素(无对应比较运算符)

isdisjoint():判断两个集合无任何交集

返回 True = 完全不相交,没有共同元素

print(a.isdisjoint(d)) # True {1,2,3} 和 {5,6} 无交集
print(a.isdisjoint(b)) # False 存在公共元素

五、集合比较常见易错点

  1. 列表/元组不能直接和集合用 < > <= >= 比较必须先转集合:

    lst = [1,2]
    # print(lst < a) 报错
    print(set(lst) < a) # True
  2. 无序不影响相等判断{1,2} == {2,1} → True,和列表 [1,2]!=[2,1] 区分开。

  3. 空集合是所有集合的子集

empty = set()
print(empty <= {1,2}) # True
print(empty < {1,2})  # True
print(empty <= empty) # True
print(empty < empty)  # False 相等不是真子集
  1. 不可哈希类型不能放入集合(列表、字典等),无法参与比较
# s = {[1,2]} 报错,列表不可哈希

六、完整综合示例

s1 = {1, 2, 3}
s2 = {1, 2, 3, 4}
s3 = {1, 2, 3}
s4 = {5, 6}

# 相等判断
print(s1 == s3)    # True
print(s1 != s2)    # True

# 子集
print(s1 <= s2)    # True
print(s1 < s2)     # True
print(s1 <= s3)    # True
print(s1 < s3)     # False

# 超集
print(s2 >= s1)    # True
print(s2 > s1)     # True

# 无交集
print(s1.isdisjoint(s4)) # True

# 方法等价
print(s1.issubset(s2))      # True
print(s2.issuperset(s1))    # True

七、总结速查表

  1. == / !=:元素是否完全相同
  2. <= / issubset():子集(包含或相等)
  3. <:真子集(完全包含,自身更小)
  4. >= / issuperset():超集(包含或相等)
  5. >:真超集(完全包含,自身更大)
  6. isdisjoint():两集合无公共元素

最新文章

随机文章