11.1 集合的定义(掌握)

集合是一个无序且不重复的元素集合。它通常用于去重、集合运算(交集、并集、差集等)等场景。集合使用大括号 {} 表示,或者通过 set() 函数创建(适用于空集合)。

  • 定义集合

    empty_set = set()                    # 空集合,不能用 {} 创建空集合
    fruits = {"apple", "banana", "cherry"}  # 包含多个元素的集合

11.2 集合的基本操作(掌握)

集合支持添加、删除和检查元素是否存在等基本操作。

11.2.1 添加元素

  • 使用 add() 方法将元素添加到集合中,如果元素已存在则不会重复添加。

    fruits = {"apple", "banana"}
    fruits.add("cherry")
    print(fruits)                      # 输出 {'apple', 'banana', 'cherry'}

11.2.2 删除元素

  • 使用 remove() 方法删除指定元素,如果元素不存在会引发 KeyError
  • 使用 discard() 方法删除指定元素,如果元素不存在不会报错。

    fruits = {"apple", "banana", "cherry"}
    fruits.remove("banana")
    fruits.discard("grape")            # 不会报错
    print(fruits)                      # 输出 {'apple', 'cherry'}

11.2.3 检查元素是否存在

  • 使用 in 关键字检查元素是否存在于集合中。

    fruits = {"apple", "banana", "cherry"}
    print("apple" in fruits)           # 输出 True
    print("grape" in fruits)           # 输出 False

11.3 集合的常用方法(掌握)

集合提供了丰富的方法来进行集合运算,如交集、并集、差集等。

11.3.1 union()|:并集

  • 使用 union() 方法或 | 运算符获取两个集合的并集,返回一个新集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.union(set2))            # 输出 {1, 2, 3, 4, 5}
    print(set1 | set2)                 # 输出 {1, 2, 3, 4, 5}

11.3.2 intersection()&:交集

  • 使用 intersection() 方法或 & 运算符获取两个集合的交集,返回一个新集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.intersection(set2))     # 输出 {3}
    print(set1 & set2)                 # 输出 {3}

11.3.3 difference()-:差集

  • 使用 difference() 方法或 - 运算符获取集合的差集,返回一个新集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.difference(set2))       # 输出 {1, 2}
    print(set1 - set2)                 # 输出 {1, 2}

11.3.4 symmetric_difference()^:对称差集

  • 使用 symmetric_difference() 方法或 ^ 运算符获取集合的对称差集,即在任一集合中但不在两个集合中的元素。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.symmetric_difference(set2))  # 输出 {1, 2, 4, 5}
    print(set1 ^ set2)                     # 输出 {1, 2, 4, 5}

11.4 集合的更新操作(掌握)

集合的更新操作会将另一个集合中的元素添加到当前集合中,通常会直接改变原集合。

11.4.1 update()|=:并集更新

  • 使用 update() 方法或 |= 运算符将另一个集合的元素并入当前集合,直接修改原集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    set1.update(set2)
    print(set1)                         # 输出 {1, 2, 3, 4, 5}

11.4.2 intersection_update()&=:交集更新

  • 使用 intersection_update() 方法或 &= 运算符保留当前集合和另一个集合的交集,直接修改原集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    set1.intersection_update(set2)
    print(set1)                         # 输出 {3}

11.4.3 difference_update()-=:差集更新

  • 使用 difference_update() 方法或 -= 运算符从当前集合中删除与另一个集合的交集元素,直接修改原集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    set1.difference_update(set2)
    print(set1)                         # 输出 {1, 2}

11.4.4 symmetric_difference_update()^=:对称差集更新

  • 使用 symmetric_difference_update() 方法或 ^= 运算符保留当前集合和另一个集合的对称差集,直接修改原集合。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    set1.symmetric_difference_update(set2)
    print(set1)                         # 输出 {1, 2, 4, 5}

11.5 集合的遍历(掌握)

可以使用 for 循环遍历集合中的每一个元素。

  • 示例

    fruits = {"apple", "banana", "cherry"}
    for fruit in fruits:
        print(fruit)

11.6 集合生成式(掌握)

集合生成式(Set Comprehension)是一种简洁的生成集合的方式,可以用一行代码创建一个新的集合,常用于数据处理和过滤。

  • 基本语法

    {表达式 for 变量 in 可迭代对象 if 条件}
  • 示例

    squares = {x**2 for x in range(1, 6)}
    print(squares)                      # 输出 {1, 4, 9, 16, 25}

11.7 集合的使用场景(了解)

集合主要用于去重和集合运算的场景,在以下情况中非常有用:

  1. 数据去重:可以快速删除重复元素。
  2. 集合运算:交集、并集、差集和对称差集等集合操作。
  3. 快速查找:集合中的查找操作的时间复杂度为 O(1),比列表更快。
  • 示例:去重应用

    numbers = [1, 2, 2, 3, 4, 4, 5]
    unique_numbers = set(numbers)
    print(unique_numbers)               # 输出 {1, 2, 3, 4, 5}

11.8 冻结集合(了解)

冻结集合(frozenset)是一种不可变集合,一旦创建就无法修改,类似于不可变的元组。冻结集合常用于需要不可变集合的场景,例如字典的键。

  • 创建冻结集合

    frozen_fruits = frozenset(["apple", "banana", "cherry"])
    # frozen_fruits.add("grape")  # 会引发 AttributeError,因为冻结集合不可修改
    print(frozen_fruits)               # 输出 frozenset({'apple', 'banana', 'cherry'})

好的,下面将详细讲解 Python 中的 if 判断语句。if 语句用于根据条件执行不同的代码块,是编写控制流的重要工具。从基本语法、分支结构到嵌套和简写形式,将详细解释 if 判断的使用。知识点分为“掌握”和“了解”两类,序号从 12.1 开始。


结束

本文标题: Python3学习笔记第十一篇--集合

本文链接: https://blog.oyooy.com/archives/57.html

除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2025 年 02 月 08 日
如果觉得我的文章对你有用,请随意赞赏