当前位置:首页>python>Python 集合(set)超详细教程

Python 集合(set)超详细教程

  • 2026-10-11 08:27:31
Python 集合(set)超详细教程

一、集合(set)核心概念

  1. 1. 集合是无序、可变、元素唯一的容器
  2. 2. 底层哈希存储,自动去重
  3. 3. 元素要求:必须是不可变类型(int、float、str、tuple)
  4. 4. 不能存放:列表、字典、集合(可变类型不能哈希)
  5. 5. 核心用途:去重、关系运算(交集/并集/差集)

二、集合的创建

1. 直接创建

# 普通集合
s1 = {1, 2, 3, 4}

# 自动去重
s2 = {1, 2, 2, 3, 3, 3}
print(s2)  # {1, 2, 3}

2. 空集合创建(重点易错)

  • • {} 是空字典,不是空集合
  • • 空集合必须用 set()
s_empty = set()
print(type(s_empty))  # <class 'set'>

3. set() 强制转换创建

可迭代对象:列表、元组、字符串、range

# 列表转集合(快速去重)
lst = [1, 2, 2, 3]
s3 = set(lst)
print(s3)

# 字符串转集合
s4 = set("abccba")
print(s4)  # {'a','b','c'}

# 区间转集合
s5 = set(range(1, 6))

三、集合四大运算(重点)

定义两个集合:

a = {1, 2, 3, 4, 5}
b = {4, 5, 6, 7, 8}

1. 并集:所有元素合并,自动去重

符号:|
方法:.union()

# 运算符
res1 = a | b
# 方法调用
res2 = a.union(b)

print(res1)  # {1,2,3,4,5,6,7,8}

2. 交集:两个集合共同拥有的元素

符号:&
方法:.intersection()

res = a & b
print(res)  # {4, 5}

3. 差集:属于A但不属于B的元素

符号:-
方法:.difference()

# a 差 b:a 独有
res = a - b
print(res)  # {1, 2, 3}

4. 对称差集:互相独有、去掉公共元素

符号:^
方法:.symmetric_difference()

res = a ^ b
print(res)  # {1,2,3,6,7,8}

四、集合常用增删改查方法

集合无序,没有索引、没有切片,不能通过下标取值。

1. add():添加单个元素

s = {1, 2, 3}
s.add(4)
s.add(2)  # 元素已存在,无报错、无效果
print(s)  # {1,2,3,4}

2. update():批量添加多个元素

接收可迭代对象:列表、元组、字符串、集合

s = {1, 2}
s.update([3, 4])
s.update("ab")
print(s)

3. remove():删除指定元素

  • • 元素不存在直接报错
s = {1, 2, 3}
s.remove(2)
# s.remove(99)  # KeyError 报错

4. discard():删除指定元素(推荐)

  • • 元素不存在不报错,程序正常运行
s = {1, 2, 3}
s.discard(2)
s.discard(99)  # 无报错,无操作

5. pop():随机删除一个元素

集合无序,随机弹出,无参数

s = {10, 20, 30}
num = s.pop()
print(num)

6. clear():清空集合

s.clear()
print(s)  # set()

五、集合关系判断

x = {1, 2}
y = {1, 2, 3, 4}

# 子集:x 所有元素都在 y 中
print(x.issubset(y))   # True

# 超集:y 包含 x 全部元素
print(y.issuperset(x)) # True

# 两个集合无交集
print(x.isdisjoint({5,6})) # True

六、集合特点总结 & 易错点

1. 核心特点

  1. 1. 元素自动去重
  2. 2. 无序存储,不支持索引、切片
  3. 3. 元素必须不可变(str/int/tuple)
  4. 4. 集合本身可变,可增删元素

2. 高频易错

  1. 1. 空集合不能写 {},必须 set()
  2. 2. remove 删不存在元素报错,discard 不报错
  3. 3. 列表、字典不能存入集合
  4. 4. 集合无序,每次打印顺序可能不同

📚 课后练习题(带详细解析)

练习1:列表快速去重

利用集合特性,对列表去重并保留唯一元素

lst = [2, 2, 5, 5, 7, 9, 9]
new_lst = list(set(lst))
print(new_lst)

练习2:集合运算

s1 = {1,3,5,7}
s2 = {3,5,9,11}
print(s1 & s2)   # 交集
print(s1 | s2)   # 并集
print(s1 - s2)   # 差集

练习3:删除元素区别

s = {10, 20, 30}
# s.remove(99)   # 报错
s.discard(99)    # 安全无报错
print(s)

📌 全文知识点速记

  1. 1. 创建:{元素}、set(可迭代对象)、空集合 set()
  2. 2. 四大运算:
    • • 并集 | / 交集 & / 差集 - / 对称差 ^
  3. 3. 常用方法:
    • • 新增:add()、update()
    • • 删除:remove()(报错)、discard()(安全)、pop()、clear()
  4. 4. 专属方法:union()、intersection()、difference()
  5. 5. 经典场景:数据去重、两个数据集对比筛选

最新文章

随机文章