侧边栏壁纸
博主头像
编程之家 博主等级

行动起来,活在当下

  • 累计撰写 37 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Python 程序设计 - 14. 集合 (set)

李航
2025-12-05 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

Python 程序设计 - 14. 集合 (set)

1. 引言

在 Python 中,集合set)是一个无序的、不重复的数据集合。它的元素是唯一的,且没有索引,因此不像列表和元组那样可以通过索引来访问。集合提供了多种数学集合运算(如交集、并集、差集等),非常适合用于处理去重、集合运算等问题。

集合是一个非常灵活且高效的数据结构,通常用于:

  • 去除重复数据
  • 进行集合之间的运算(如并集、交集、差集)
  • 存储不需要顺序的数据

2. 集合的基本概念

集合与列表、元组不同的地方在于:

  1. 无序性:集合中的元素没有顺序,也不能通过索引来访问。
  2. 唯一性:集合中的每个元素都是唯一的,自动去重。
  3. 可变性:集合是可变的(mutable),但是集合的元素必须是可哈希的(通常是不可变类型,如数字、字符串和元组)。

定义集合

# 创建一个空集合
empty_set = set()

# 创建一个包含多个元素的集合
fruits = {"apple", "banana", "cherry"}

# 集合中的元素是唯一的,如果重复元素会自动去除
numbers = {1, 2, 3, 3, 2}
print(numbers)  # 输出: {1, 2, 3}

注意:创建空集合时不能使用 {},因为 {} 代表的是空字典。如果想要创建空集合,必须使用 set()

3. 集合的常用操作

3.1 添加元素

使用 add() 方法可以向集合中添加一个元素。添加的元素必须是可哈希的(不可变类型,如整数、字符串、元组等)。

fruits = {"apple", "banana", "cherry"}

# 使用 add() 向集合添加元素
fruits.add("orange")
print(fruits)  # 输出: {'apple', 'banana', 'cherry', 'orange'}
3.2 删除元素

可以使用 remove()discard()pop()clear() 来删除集合中的元素。

  • remove():删除指定元素,如果元素不存在,抛出 KeyError
  • discard():删除指定元素,如果元素不存在,不抛出错误。
  • pop():随机删除并返回一个元素。
  • clear():删除集合中的所有元素。
fruits = {"apple", "banana", "cherry"}

# 使用 remove() 删除元素,如果元素不存在会引发 KeyError
fruits.remove("banana")
print(fruits)  # 输出: {'apple', 'cherry'}

# 使用 discard() 删除元素,元素不存在不会报错
fruits.discard("banana")  # 元素已被删除,不会报错
print(fruits)  # 输出: {'apple', 'cherry'}

# 使用 pop() 随机删除一个元素
removed_item = fruits.pop()
print(f"删除的元素是: {removed_item}")
print(fruits)  # 输出: 只剩下一个元素

# 使用 clear() 清空集合
fruits.clear()
print(fruits)  # 输出: set()
3.3 集合的运算

集合提供了多种常见的数学运算,例如并集、交集、差集和对称差集。

  • union()|:并集
  • intersection()&:交集
  • difference()-:差集
  • symmetric_difference()^:对称差集
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 并集
union_set = set1 | set2
print(union_set)  # 输出: {1, 2, 3, 4, 5, 6}

# 交集
intersection_set = set1 & set2
print(intersection_set)  # 输出: {3, 4}

# 差集
difference_set = set1 - set2
print(difference_set)  # 输出: {1, 2}

# 对称差集
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set)  # 输出: {1, 2, 5, 6}
3.4 集合的长度

使用 len() 函数可以获取集合中元素的个数。

fruits = {"apple", "banana", "cherry"}
print(len(fruits))  # 输出: 3
3.5 集合的成员测试

可以使用 in 运算符来测试某个元素是否在集合中。

fruits = {"apple", "banana", "cherry"}

# 检查元素是否在集合中
print("banana" in fruits)  # 输出: True
print("orange" in fruits)  # 输出: False

4. 集合的应用场景

集合主要用于以下场景:

  1. 去除重复元素:集合可以自动去除重复的元素,非常适合用于去重。
  2. 集合运算:集合支持数学上的并集、交集、差集和对称差集运算,这使得它在处理集合之间的关系时非常高效。
  3. 检查元素的存在性:通过集合的 in 操作可以高效地检查某个元素是否在集合中。

例如,去重操作:

# 使用集合去除列表中的重复元素
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers)  # 输出: {1, 2, 3, 4, 5}

5. 集合常见方法

方法描述
add(x)向集合添加元素 x
remove(x)删除集合中的元素 x,如果元素不存在抛出 KeyError
discard(x)删除集合中的元素 x,如果元素不存在不抛出错误
pop()删除并返回集合中的一个元素
clear()清空集合
union(other_set)返回集合与 other_set 的并集
intersection(other_set)返回集合与 other_set 的交集
difference(other_set)返回集合与 other_set 的差集
symmetric_difference(other_set)返回集合与 other_set 的对称差集
copy()返回集合的浅拷贝

6. 练习题

练习 1:创建集合并进行去重
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers)  # 输出: {1, 2, 3, 4, 5}
练习 2:集合运算
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 并集
print(set1 | set2)  # 输出: {1, 2, 3, 4, 5, 6}

# 交集
print(set1 & set2)  # 输出: {3, 4}

# 差集
print(set1 - set2)  # 输出: {1, 2}

# 对称差集
print(set1 ^ set2)  # 输出: {1, 2, 5, 6}
练习 3:检查元素是否在集合中
fruits = {"apple", "banana", "cherry"}

# 检查 "banana" 是否在集合中
print("banana" in fruits)  # 输出: True

# 检查 "grape" 是否在集合中
print("grape" in fruits)  # 输出: False

7. 总结

集合是 Python 中非常实用的数据结构,它的主要特点是无序和唯一性,适用于去重、集合运算以及高效的成员测试等操作。集合提供了多种数学集合运算,能够让你轻松地处理数据之间的关系。通过学习集合的基本操作,你可以更好地利用它来解决实际编程中的问题。

0

评论区