当前位置: 首页 > article >正文

深入探索Python集合(Set)的高效应用:数据处理、性能优化与实际案例分析

在这里插入图片描述

文章目录

    • 前言
    • 🪁一、 定义集合
      • 1.1 使用大括号 `{}` 定义集合
      • 1.2 使用 `set()` 函数定义集合
    • 🪁二、添加元素
      • 2.1 使用 `add()` 方法
      • 2.2 使用 `update()` 方法
    • 🪁三、移除元素
      • 3.1 使用 `remove()` 方法
      • 3.2 使用 `discard()` 方法
      • 3.3 使用 `pop()` 方法
      • 3.4 使用 `clear()` 方法
      • 3.5 使用 `del` 关键字
      • 小结:
    • 🪁四、取差集
      • 4.1 使用 `difference()` 方法
      • 4.2 使用 `-` 运算符
      • 4.3 使用 `difference_update()` 方法
      • 小结:
    • 🪁五、合并集合
      • 5.1 使用 `union()` 方法
      • 5.2 使用 `|` 运算符
      • 5.3 使用 `update()` 方法
      • 小结:
    • 🪁六、清空集合和获取集合长度
      • 6.1 清空集合(clear)
      • 6.2 获取集合长度(len)
      • 小结:
    • 🪁七、遍历集合
      • 7.1 使用 `for` 循环遍历集合
      • 7.2 使用 `enumerate()` 获取索引和元素
      • 小结:
    • 结语


前言

在Python编程中,集合(set)是一种基本的数据结构,它用于存储唯一(不重复)的元素。与列表(list)不同,集合中的元素是无序的,并且不允许有重复值。集合提供了丰富的操作方法来处理集合之间的关系,如并集、交集、差集等。本文将详细介绍Python中集合的常用操作,并通过代码实例进行演示和分析。


🪁一、 定义集合

在 Python 中,定义集合可以通过两种方式实现:使用大括号 {} 或使用 set() 函数。下面是具体的用法:

1.1 使用大括号 {} 定义集合

这种方式是定义集合的最直接方式,但注意,集合中的元素必须是不可变类型(例如,整数、字符串、元组等),并且集合中的元素是唯一的。

# 定义一个包含整数的集合
int_set = {1, 2, 3, 4}

# 定义一个包含字符串的集合
str_set = {"apple", "banana", "cherry"}

# 定义一个混合类型的集合
mixed_set = {1, "apple", (2, 3)}

print(int_set)    # 输出: {1, 2, 3, 4}
print(str_set)    # 输出: {'apple', 'banana', 'cherry'}
print(mixed_set)  # 输出: {1, (2, 3), 'apple'}

1.2 使用 set() 函数定义集合

当你需要从其他可迭代对象(如列表、元组、字符串等)创建集合时,或者当你需要定义一个空集合时,可以使用 set() 函数。

# 从列表创建集合
list_set = set([1, 2, 2, 3, 4])  # 重复元素 2 会自动去重
print(list_set)  # 输出: {1, 2, 3, 4}

# 从字符串创建集合
str_set = set("hello")
print(str_set)  # 输出: {'e', 'h', 'l', 'o'} (无序,元素唯一)

# 创建一个空集合
empty_set = set()
print(empty_set)  # 输出: set()

注意

  • 直接使用 {} 会创建一个空字典,而不是集合。要定义空集合,必须使用 set() 函数。
  • 集合中不允许出现可变类型的元素,例如,不能将列表或字典作为集合的元素。

这样就定义好了集合,接下来可以使用它来执行各种集合操作。

🪁二、添加元素

在 Python 中,可以通过以下两种方式向集合中添加元素:

2.1 使用 add() 方法

add() 方法用于向集合中添加单个元素。如果该元素已经存在于集合中,集合不会发生变化,因为集合中的元素是唯一的。

# 定义一个集合
my_set = {1, 2, 3}

# 添加一个新的元素
my_set.add(4)

print(my_set)  # 输出: {1, 2, 3, 4}

# 尝试添加一个已经存在的元素
my_set.add(3)

print(my_set)  # 输出: {1, 2, 3, 4} (没有变化,因为 3 已经存在)

2.2 使用 update() 方法

update() 方法用于向集合中添加多个元素。可以传入一个可迭代对象(如列表、元组、字符串、另一个集合等),并将其中的元素添加到集合中。

# 定义一个集合
my_set = {1, 2, 3}

# 添加多个元素
my_set.update([4, 5])

print(my_set)  # 输出: {1, 2, 3, 4, 5}

# 使用字符串作为可迭代对象
my_set.update("hello")  # 每个字符会作为单独的元素添加

print(my_set)  # 输出: {1, 2, 3, 4, 5, 'e', 'l', 'h', 'o'} (无序,字符被拆分)

注意

  • add() 是添加单个元素,而 update() 可以添加多个元素。
  • update() 方法可以接受任何可迭代对象(列表、元组、字符串等),并会将其中的元素逐个添加到集合中。

🪁三、移除元素

在 Python 中,集合提供了多种方法来移除元素。常用的有以下几种:

3.1 使用 remove() 方法

remove() 方法用于移除指定的元素。如果该元素不存在于集合中,会抛出 KeyError 异常。

# 定义一个集合
my_set = {1, 2, 3, 4}

# 移除一个存在的元素
my_set.remove(3)

print(my_set)  # 输出: {1, 2, 4}

# 移除一个不存在的元素(会抛出 KeyError)
# my_set.remove(5)  # 运行时将抛出 KeyError: 5

3.2 使用 discard() 方法

discard() 方法和 remove() 类似,用于移除指定的元素,但如果该元素不存在,discard() 不会抛出异常。

# 定义一个集合
my_set = {1, 2, 3, 4}

# 移除一个存在的元素
my_set.discard(3)

print(my_set)  # 输出: {1, 2, 4}

# 移除一个不存在的元素,不会抛出异常
my_set.discard(5)

print(my_set)  # 输出: {1, 2, 4} (没有变化)

3.3 使用 pop() 方法

pop() 方法随机移除集合中的一个元素,并返回该元素。由于集合是无序的,因此无法预知移除的是哪个元素。如果集合为空,调用 pop() 会抛出 KeyError

# 定义一个集合
my_set = {1, 2, 3, 4}

# 随机移除一个元素,并返回该元素
removed_element = my_set.pop()

print(removed_element)  # 输出: (随机的元素,可能是 1、2、3、4 中的任何一个)
print(my_set)  # 输出: 剩余的元素集合,移除一个元素后的集合

3.4 使用 clear() 方法

clear() 方法用于移除集合中的所有元素,将集合变为空集合。

# 定义一个集合
my_set = {1, 2, 3, 4}

# 清空集合
my_set.clear()

print(my_set)  # 输出: set() (空集合)

3.5 使用 del 关键字

如果你想完全删除集合对象(不仅是移除集合中的元素,还要删除整个集合),可以使用 del 关键字。

# 定义一个集合
my_set = {1, 2, 3, 4}

# 删除集合
del my_set

# 访问被删除的集合将抛出 NameError
# print(my_set)  # 将抛出 NameError: name 'my_set' is not defined

小结:

  • remove():移除指定元素,元素不存在时抛出异常。
  • discard():移除指定元素,元素不存在时不抛异常。
  • pop():随机移除并返回一个元素,集合为空时抛出异常。
  • clear():清空集合中的所有元素。
  • del:删除整个集合对象。

🪁四、取差集

在 Python 中,差集指的是一个集合中的元素减去另一个集合中的元素,即返回只存在于第一个集合但不在第二个集合中的元素。可以通过以下几种方式来获取集合的差集:

4.1 使用 difference() 方法

difference() 方法返回两个集合的差集,结果是一个新的集合,不会修改原始集合。

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 获取 set1 与 set2 的差集
difference_set = set1.difference(set2)

print(difference_set)  # 输出: {1, 2} (只在 set1 中出现,未出现在 set2 中)

4.2 使用 - 运算符

- 运算符也可以用于获取两个集合的差集,结果同样是一个新的集合。

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 使用 - 运算符获取差集
difference_set = set1 - set2

print(difference_set)  # 输出: {1, 2} (同样是 set1 中的元素减去 set2 中的元素)

4.3 使用 difference_update() 方法

difference_update() 方法与 difference() 的不同之处在于,它会直接修改调用该方法的集合,使其变为差集结果,而不返回新集合。

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 直接更新 set1,使其变为差集
set1.difference_update(set2)

print(set1)  # 输出: {1, 2} (set1 本身被修改为差集结果)

小结:

  • difference()- 运算符:返回两个集合的差集,结果为新集合,不修改原集合。
  • difference_update():将原集合修改为差集,不返回新集合。

🪁五、合并集合

在 Python 中,合并集合(即并集操作)是将两个或多个集合中的所有元素合并到一起,并去除重复的元素。Python 提供了几种方式来执行集合的并集操作:

5.1 使用 union() 方法

union() 方法用于返回两个或多个集合的并集,结果是一个新的集合,不会修改原始集合。

# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 获取 set1 和 set2 的并集
union_set = set1.union(set2)

print(union_set)  # 输出: {1, 2, 3, 4, 5}

你可以传入多个集合进行并集操作:

# 定义多个集合
set1 = {1, 2}
set2 = {3, 4}
set3 = {4, 5, 6}

# 合并多个集合
union_set = set1.union(set2, set3)

print(union_set)  # 输出: {1, 2, 3, 4, 5, 6}

5.2 使用 | 运算符

| 运算符也是用于获取集合并集的快捷方式,效果与 union() 方法相同。

# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 | 运算符获取并集
union_set = set1 | set2

print(union_set)  # 输出: {1, 2, 3, 4, 5}

5.3 使用 update() 方法

update() 方法用于将一个集合与另一个集合的并集更新到当前集合中,即直接修改调用 update() 的集合,并不会返回新的集合。

# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 更新 set1,使其成为与 set2 的并集
set1.update(set2)

print(set1)  # 输出: {1, 2, 3, 4, 5} (set1 被修改)

小结:

  • union():返回两个或多个集合的并集,结果是一个新集合,不修改原始集合。
  • | 运算符:与 union() 类似,用于返回两个集合的并集。
  • update():直接将并集结果更新到原集合,修改原集合。

🪁六、清空集合和获取集合长度

在 Python 中,清空集合获取集合长度可以通过以下方法来实现:

6.1 清空集合(clear)

可以使用 clear() 方法来清空一个集合。clear() 会移除集合中的所有元素,使其变成一个空集合。

# 定义一个集合
my_set = {1, 2, 3, 4, 5}

# 使用 clear() 方法清空集合
my_set.clear()

print(my_set)  # 输出: set() (空集合)

6.2 获取集合长度(len)

可以使用内置函数 len() 来获取集合的长度,返回集合中元素的个数。

# 定义一个集合
my_set = {1, 2, 3, 4, 5}

# 使用 len() 获取集合长度
length = len(my_set)

print(length)  # 输出: 5 (集合中有 5 个元素)

小结:

  • 清空集合:使用 clear() 方法可以将集合中的所有元素移除,变为一个空集合。
  • 获取集合长度:使用 len() 函数可以获取集合中元素的数量。

🪁七、遍历集合

在 Python 中,遍历集合可以使用 for 循环,因为集合是可迭代的。由于集合是无序的,遍历集合时元素的顺序是随机的。以下是遍历集合的常见方式:

7.1 使用 for 循环遍历集合

# 定义一个集合
my_set = {1, 2, 3, 4, 5}

# 使用 for 循环遍历集合
for element in my_set:
    print(element)

输出的顺序可能是任意的,因为集合是无序的,例如:

1
2
3
4
5

7.2 使用 enumerate() 获取索引和元素

虽然集合本身是无序的,但如果你希望在遍历时获得类似索引的功能,可以使用 enumerate()。尽管 enumerate() 返回的数字并不是集合元素的实际索引(因为集合无序),但它可以用作遍历过程中每次迭代的计数器。

# 定义一个集合
my_set = {1, 2, 3, 4, 5}

# 使用 enumerate() 遍历集合并获取计数
for index, element in enumerate(my_set):
    print(f"元素 {index}: {element}")

可能的输出是:

元素 0: 1
元素 1: 2
元素 2: 3
元素 3: 4
元素 4: 5

小结:

  • 使用 for 循环:最简单的方式,用于遍历集合中的每个元素。
  • 使用 enumerate():可以在遍历时为每个元素提供一个计数器,尽管集合元素没有固定顺序。

结语

本文详细介绍了Python中集合的常用操作,包括定义集合、添加元素、移除元素、随机移除元素、取差集、原地取差集、合并集合、清空集合和获取集合长度等。集合作为一种独特的数据结构,在Python编程中发挥着重要作用,特别是在处理唯一性要求和集合运算时。通过掌握集合的用法,我们可以更加高效地处理数据,提高编程效率和代码可读性。希望本文对你理解和使用Python集合有所帮助!
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

在这里插入图片描述


http://www.kler.cn/news/360258.html

相关文章:

  • 银行卡归属地接口-在线银行卡归属地-银行卡归属地API
  • 【深度解析】WRF-LES与PALM微尺度气象大涡模拟
  • tkinter Listbox 列表框实现多列对齐排列并绑定下拉框和滚动条
  • Java:玩家打怪小游戏
  • 【GO实战课】第六讲:电子商务网站(6):支付和订单处理
  • 工厂设计模式(Factory Pattern)
  • vue与u3d互调
  • 《Linux运维》之解决“Failed to start LSB: Bring up/down networking.“问题的方法
  • R语言医学数据分析实践-糖尿病风险预测实战
  • 大数据之hive(分布式SQL计算工具)加安装部署
  • 滚雪球学Redis[7.0讲]:Redis在Web应用中的会话管理:实现、优化与安全性!
  • Vue使用OnlyOffice预览文档方案
  • uniapp展示本地swf格式文件,实现交互
  • WPF开发之页面切换
  • 【氮化镓】低温对p-GaN HEMT迁移率、阈值电压和亚阈值摆幅的影响
  • 云安全 | AWS S3存储桶安全设计缺陷分析
  • 人工智能 | 阿里通义千问大模型
  • 面试篇!!!!!
  • 数据结构编程实践20讲(Python版)—20并查集
  • 超全!一文详解大模型的11种微调方法