小甲鱼Python学习笔记

课程主题

  • 讲师:小甲鱼
  • 内容:Python 集合(set)基础精讲
  • 核心关联:集合是字典的「表亲」,共用花括号标识

集合与字典的标识区分

  • 空花括号 {} → 定义空字典(dict),不是空集合
  • 花括号内写无映射关系的元素 {1,2,3} → 定义集合(set)
  • 核心共性:同用大括号;核心区别:字典是键值映射,集合是独立元素集合

集合的核心特性(重中之重)

  • ✅ 元素唯一性:自动剔除重复元素,去重是核心作用
  • ❌ 元素无序性:没有索引下标,不支持 集合[下标] 的索引访问,索引会直接报错
  • 示例:num2 = {1,2,3,4,5,5,4,3,2} → 自动变成 {1,2,3,4,5}

集合的两种创建方式

  1. 直接创建:用花括号包裹元素 {元素1, 元素2, ...}
    • 示例:num2 = {1,2,3,4,5}
  2. 工厂函数创建:set(序列) ,可传入列表/元组/字符串等序列
    • 示例:set1 = set([1,2,3,5,5,3]) → 生成 {1,2,3,5}
    • 特性:自动完成去重处理

经典应用:列表去重 两种实现方式对比

方式一:未学集合(传统方法)- 用for循环+判断

  • 思路:新建空列表,遍历原列表,元素不在新列表则追加
  • 优点:保留原列表的元素顺序
  • 缺点:代码繁琐、效率低

方式二:学集合后(简便方法)- 列表→集合→列表

  • 写法:new_list = list(set(原列表))
  • 优点:代码极简,一行完成去重
  • 缺点:集合无序,转换后丢失原列表的元素顺序,需警惕

集合的访问与基础操作

元素访问/判断

  1. 遍历访问:用 for 元素 in 集合 逐个取出元素
  2. 成员判断:用 in / not in 判断元素是否存在于集合中
    • 示例:1 in {1,2,3} → True ;6 not in {1,2,3} → True

元素增删内置方法

  1. add() :向集合中添加单个元素
    • 示例:num2.add(6) → {1,2,3,4,5,6}
  2. remove() :从集合中删除指定元素
    • 示例:num2.remove(5) → {1,2,3,4,6}

不可变集合(冻结集合)

  • 定义关键字:frozenset (frozen=冰冻的、冻结的)
  • 定义方式:frozenset(序列/元素)
    • 示例:num3 = frozenset({1,2,3,4,5})
  • 核心特性:元素不可增、不可删、不可改,集合内容永久固定
  • 关键特点:没有 add()remove() 等修改类方法,调用会直接报错
  • 作用:满足需要「稳定不修改的集合」的业务场景