深入探索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 - set2print(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 | set2print(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.rhkb.cn/news/474675.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32单片机CAN总线汽车线路通断检测-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…

NIST 发布后量子密码学转型战略草案

美国国家标准与技术研究所 (NIST) 发布了其初步战略草案,即内部报告 (IR) 8547,标题为“向后量子密码标准过渡”。 该草案概述了 NIST 从当前易受量子计算攻击的加密算法迁移到抗量子替代算法的战略。该草案于 2024 年 11 月 12 日发布,开放…

Javaweb梳理17——HTMLCSS简介

Javaweb梳理17——HTML&CSS简介 17 HTML&CSS简介17.1 HTML介绍17.2 快速入门17.3 基础标签17.3 .1 标题标签17.3.2 hr标签17.3.3 字体标签17.3.4 换行17.3.8 案例17.3.9 图片、音频、视频标签17.3.10 超链接标签17.3.11 列表标签17.3.12 表格标签17.3.11 布局标签17.3.…

【支持向量机(SVM)】:算法原理及核函数

文章目录 1 SVM算法原理1.1 目标函数确定1.2 约束条件优化问题转换1.3 对偶问题转换1.4 确定超平面1.5 计算举例1.6 SVM原理小节 2 SVM核函数2.1 核函数的作用2.2 核函数分类2.3 高斯核函数2.3 高斯核函数API2.4 超参数 γ \gamma γ 1 SVM算法原理 1.1 目标函数确定 SVM思想…

mysql bin log分析

centos7 部署collabora office (yum版 与 docker)_collabora office部署-CSDN博客 1.下载polardb的bin log文件 show binary logs; mysqlbinlog -u 用户名 -p -h 地址 --read-from-remote-server --raw mysql-bin.001768 mysqlbinlog --no-defaults --databasexxx --base64-…

初识进程——Linux

目录 概述 进程控制块 指令知识补充 标识符函数 /proc 目录介绍 /proc/(pid) cwd exe: fork 结束语 概述 进程是程序执行的实体,两者之间有着密切联系。程序是静态的代码与指令集合,每次运行程序都会创建新的进程…

湘潭大学软件工程算法设计与分析考试复习笔记(三)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记(一)湘潭大学软件工程算法设计与分析考试复习笔记(二) 前言 现在继续开始复习。每天复习一点点,嘿嘿。今天本来准备写一个动态规划的题的,感觉半懂不懂…

109. UE5 GAS RPG 实现检查点的存档功能

在这一篇文章里,我们接着实现存档的功能,保存当前玩家的生成位置,游戏里有很多中方式去实现玩家的位置存储,这里我们采用检查点的方式,当玩家接触到当前检查点后,我们可以通过检查点进行保存玩家的状态&…

如何创建一个项目用于研究element-plus的原理

需求:直接使用element-plus未封装成组件的源码,创建一个项目,可以使用任意的element-plus组件,可以深度研究组件的运行。例如研究某一个效果,如果直接在node_modules修改elment-plus打包之后的那些js、mjs代码&#xf…

机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合 1.欠拟合 模型在训练数据上表现不佳,在新的数据上也表现不佳,常发生在模型过于简单无法处理数据中的复杂模式时。 特征: 训练误差较高 测试误差也高 模型过于简化,不能充分学习训练数据中的模式 2.过拟合 …

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…

STM32 独立看门狗(IWDG)详解

目录 一、引言 二、独立看门狗的作用 三、独立看门狗的工作原理 1.时钟源 2.计数器 3.喂狗操作 4.超时时间计算 5.复位机制 四、独立看门狗相关寄存器 1.键寄存器(IWDG_KR) 2.预分频寄存器(IWDG_PR) 3.重载寄存器&…

足球虚拟越位线技术FIFA OT(二)

足球虚拟越位线技术FIFA OT(二) 在FIFA认证测试过程中,留给VAR系统绘制越位线的时间只有90秒(在比赛中时间可能更短),那么90秒内要做什么事呢,首先场地上球员做出踢球动作,然后VAR要…

MySQL数据库3——函数与约束

一.函数 1.字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 使用方法: SELECT 函数名(参数);注意:MySQL中的索引值即下标都是从1开始的。 2.数值函数 常见的数值函数如下: 使用方法: SELECT…

Proteus 8.17的详细安装教程

通过百度网盘分享的文件:Proteus8.17(64bit).zip 链接:https://pan.baidu.com/s/1zu8ts1Idhgg9DGUHpAve7Q 提取码:8q8v 1.右击【Proteus8.17(64bit).zip】,选择【全部解压缩......】。 , 2.…

MySQL安装及数据库基础

目录 一. MySQL下载安装 1.1 安装(如果之前有安装过MySQL,先执行下面的卸载流程) 1.1.1 更新系统的软件包列表 1.1.2 安装MySQL服务器 1.1.3 检查MySQL服务是否启动,若没有启动手动启动 1.1.4 登录MySQL&#x…

NavVis VLX3的精度怎么去进行验证?【上海沪敖3D】

01、精度评价现状 三维捕捉行业还没有建立一个用于估算或验证移动激光扫描系统精度的统一标准。因此,需要高精度交付成果的专业人士很难相信设备所标注的精度规格,也就很难知道基于SLAM的移动激光扫描系统是否适合当前的项目。 NavVis将通过展示一种严格…

css3新特性(二十六课)

1、css3盒子模型 box - sizing: content - box; 是 CSS 中用于定义盒模型宽度和高度计算方式的一个属性值。在这种盒模型下,元素的宽度和高度(width和height属性)仅包括内容区域(content)的大小&#xff…

macbook外接2k/1080p显示器调试经验

准备工具 电脑 满足电脑和显示器要求的hdmi线或者转接头或者扩展坞 betterdisplay软件 Dell P2419H的最佳显示信息如下 飞利浦 245Es 2K的最佳显示比例如下 首选1152

【Hadoop】【大数据技术基础】实践三 NoSQL数据库 大数据基础编程、实验和案例教程(第2版)

第6章 典型NoSQL数据库的安装和使用 Redis安装和使用MongoDB的安装和使用 6.1 Redis安装和使用 6.1.1 Redis简介 Redis是一个键值(key-value)存储系统,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的…