课程主题
- 讲师:小甲鱼
- 内容:Python 集合(set)基础精讲
- 核心关联:集合是字典的「表亲」,共用花括号标识
集合与字典的标识区分
- 空花括号
{}→ 定义空字典(dict),不是空集合 - 花括号内写无映射关系的元素
{1,2,3}→ 定义集合(set) - 核心共性:同用大括号;核心区别:字典是键值映射,集合是独立元素集合
集合的核心特性(重中之重)
- ✅ 元素唯一性:自动剔除重复元素,去重是核心作用
- ❌ 元素无序性:没有索引下标,不支持
集合[下标]的索引访问,索引会直接报错 - 示例:
num2 = {1,2,3,4,5,5,4,3,2}→ 自动变成{1,2,3,4,5}
集合的两种创建方式
- 直接创建:用花括号包裹元素
{元素1, 元素2, ...}- 示例:
num2 = {1,2,3,4,5}
- 示例:
- 工厂函数创建:
set(序列),可传入列表/元组/字符串等序列- 示例:
set1 = set([1,2,3,5,5,3])→ 生成{1,2,3,5} - 特性:自动完成去重处理
- 示例:
经典应用:列表去重 两种实现方式对比
方式一:未学集合(传统方法)- 用for循环+判断
- 思路:新建空列表,遍历原列表,元素不在新列表则追加
- 优点:保留原列表的元素顺序
- 缺点:代码繁琐、效率低
方式二:学集合后(简便方法)- 列表→集合→列表
- 写法:
new_list = list(set(原列表)) - 优点:代码极简,一行完成去重
- 缺点:集合无序,转换后丢失原列表的元素顺序,需警惕
集合的访问与基础操作
元素访问/判断
- 遍历访问:用
for 元素 in 集合逐个取出元素 - 成员判断:用
in / not in判断元素是否存在于集合中- 示例:
1 in {1,2,3}→ True ;6 not in {1,2,3}→ True
- 示例:
元素增删内置方法
add():向集合中添加单个元素- 示例:
num2.add(6)→ {1,2,3,4,5,6}
- 示例:
remove():从集合中删除指定元素- 示例:
num2.remove(5)→ {1,2,3,4,6}
- 示例:
不可变集合(冻结集合)
- 定义关键字:
frozenset(frozen=冰冻的、冻结的) - 定义方式:
frozenset(序列/元素)- 示例:
num3 = frozenset({1,2,3,4,5})
- 示例:
- 核心特性:元素不可增、不可删、不可改,集合内容永久固定
- 关键特点:没有
add()、remove()等修改类方法,调用会直接报错 - 作用:满足需要「稳定不修改的集合」的业务场景