Python教程(12)——Python数据结构集合set介绍

集合

    • 创建集合
    • 访问集合
    • 删除集合
    • 修改集合元素
      • 添加集合元素
      • 删除集合元素
    • 集合运算:
      • 并集(Union)
      • 交集(Intersection)
      • 差集(Difference)
      • 对称差集(Symmetric Difference)
    • 集合的相关函数

集合是一种无序、可变的数据结构,它也是一种变量类型,集合用于存储唯一的元素。集合中的元素不能重复,并且没有固定的顺序。在Python 提供了内置的 set 类型来表示集合,所以关键字set就是集合的意思。

你可以使用大括号 {} 或者 set() 函数来创建一个集合。

my_set = {1, 2, 3}  # 使用大括号创建集合
print(my_set)  # 输出: {1, 2, 3}

my_set = set([1, 2, 3]) # 使用 set() 函数创建集合
print(my_set)  # 输出: {1,2, 3}

需要注意的是,集合是无序的,没有固定的顺序。因此,集合元素的顺序可能与你创建或添加的顺序不同。

集合具有以下特点:

  • 集合中的元素是唯一的,不重复。如果重复相同的元素,集合将自动去重。
  • 集合是无序的,没有固定的顺序。因此,你无法像列表或元组那样索引来访问集合中的元素。
  • 集合是可迭代的,你可以使用 for 循环遍历集合中的元素。
  • 集合是可变的,你可以添加、删除和修改集合中的元素
    在这里插入图片描述

创建集合

要使用集合,首先就必须要创建,那么在 Python 中,有哪些创建集合的方式呢?你可以使用以下几种方式创建集合。

1、 使用大括号 {} 或者 set() 函数创建一个集合,将元素用逗号隔开:

my_set = {1, 2, 3}  # 使用大括号创建集合
print(my_set)  # 输出: {1, 2, 3}

my_set = set([1, 2, 3]) # 使用 set() 函数创建集合
print(my_set)  # 输出: {1, 2, 3}

注意,如果你使用空的大括号 {} 来创建一个对象,那么创建的将是一个空字典,而非空集合。因此,你必须使用 set() 函数来创建一个空集合:

empty_set = set()
print(empty_set)  # 输出: set()

2、 使用集合推导式来创建集合。集合推导式的语法类似于列表推导式,只需将中括号 [ ] 替换为大括号 { }

my_set = {i for i in range(1, 5)}
print(my_set)  # 输出: {1, 2, 3, 4}

3、 将其他可迭代的对象(列表、字符串、元组等)转换为集合,可以使用 set() 函数来实现:

my_list = [1, 2, 3, 2]
my_set = set(my_list)
print(my_set)  # 输出: {1, 2, 3}

my_string = 'hello'
my_set ={my_string}
print(my_set)  # 输出: {'h', 'e', 'l', 'o'}

访问集合

由于集合是无序的,没有固定的索引,使用索引访问集合中的元素是不可行的,要访问集合中的元素,你可以使用迭代器或者通过成员运算符来实现。

1、 使用迭代器:通过使用 for 循环遍历集合中的每个元素。

my_set = {1, 2, 3}
for item in my_set:
    print(item)

2、 使用成员运算:使用 in 或者 not in 运算符来检查元素是否存在于集合中。

my_set = {1, 2, 3}
print(2 in my_set)  # 输出: True
print(4 not in my_set)  # 输出: True

删除集合

在 Python 中,可以使用 del 关键字来删除集合:

1、 使用 del 关键字删除集合变量,删除之后如果再次访问,就会发生错误。

my_set = {1, 2, 3}
del my_set

修改集合元素

创建的集合,我们可以对其中的集合元素进行操作,不仅可以添加元素,还是可以删除其中的元素。

添加集合元素

1、使用 add() 方法向集合中添加元素。

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

2、使用列表的解包操作添加多个元素。

my_set = {1, 2, 3}
new_elements = [4, 5]
my_set.update(new_elements)
print(my_set)  # 输出: {1, 2, 3, 4, 5}

因为集合的元素是唯一的,所以如果添加了重复的元素,那么重复的元素不会被添加到集合中,当然执行的过程并不会发生报错,只是不会被添加进去而已。在使用update()方法时,传入的参数可以是一个集合、列表或者其他可迭代对象。

删除集合元素

1、 使用 remove() 方法删除指定元素:remove() 方法会从集合中删除指定的元素。如果集合中不存在该元素,会引发 KeyError 异常。

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

my_set.remove(5)  # 删除不存在的元素,引发 KeyError 异常

2、 使用 discard() 方法删除指定元素:discard() 方法会从集合中删除指定的元素。如果集合不存在该元素,该不会引发异常而是不进行任何操作。

my_set = {1, 2, 3 4}
my_set.discard(3)
(my_set)  # 输出: {1, 2, 4}

my_set.discard(5)  # 删除不存在的元素,不会引发异常

3、 clear() 方法清空集合:clear() 方法会清空集合元素。

my_set = {1, 2, 3, 4}
my_set.clear()
print(my_set)  # 输出: set()

集合运算:

集合的运算指的是对集合进行一系列操作,包括求并集、交集、差集和对称差集等。这些运算可通过运算符或方法来进行。

并集(Union)

可以使用 | 运算符或者 union() 方法来获取两个集合的并集。所谓的并集就是包含set1和set2集合的所有元素。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 | set2  # 使用 | 运算符
# 或者使用 union() 方法
# set3 = set1.union(set2)
print(set3)  # 输出: {1, 2, 3, 4, 5}

交集(Intersection)

可以使用 & 运算符或者 intersection() 方法来获取两个集合的交集。所谓的交集就是取set1和set2集合的相同元素,没有相同元素的话返回的就是set()

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 & set2  # 使用 & 运算符
# 或者使用 intersection() 方法
# set3 = set1.intersection(set2)
print(set3)  # 输出: {3}

差集(Difference)

可以使用 - 运算符或者 difference() 方法来获取两个集合的差集。所谓的差集就是set1中独有的元素,如果set1中的元素,在set2中也有,那么就该元素就不能在差集中。如果是set2 - set1,那就是set2中独有的元素。结果为空的返回就是set()

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 - set2  # 使用 - 运算符
# 或者使用 difference() 方法
# set3 = set1.difference(set2)
print(set3)  # 输出: {1, 2}

对称差集(Symmetric Difference)

可以使用 ^ 运算符或者 symmetric_difference() 方法来获取两个集合的对称差集。所谓的对称差集就是set1和set2中相同的元素剔除,剩下的元素就是对称差集。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 ^ set2  #使用 ^ 运算符
# 或者使用 symmetric_difference() 方法
# set3 = set1.symmetric_difference(set2)
print(set3)  # 输出: {1, 2, 4, 5}

需要注意的是,在使用集合运算符时,两个集合的元素类型必须一致。另外,集合的元素是唯一的,不会出现重复。

除了运算符外,还有其他一些常用的集合方法,比如 intersection_update() 方法用于在原集合上更新为两个集合的交集,difference_update() 方法用于在原集合上更新为两个集合的差集,symmetric_difference_update() 方法用于在原集合上更新为两个集合的对称差集。

集合的相关函数

以下是 Python 中常用的集合相关函数:

函数名解释
add(element)向集合中添加一个元素。
clear()移除集合中的所有元素。
copy()返回集合的副本。
difference(other_set[, …])返回该集合与其他集合的差集。
difference_update(other_set[, …])移除该集合中与其他集合相同的元素,并更新原集合。
discard(element)移除集合中指定的元素。
intersection(other_set[, …])返回该集合与其他集合的交集。
intersection_update(other_set[, …])移除该集合中与其他集合不同的元素,并更新原集合。
isdisjoint(other_set)如果两个集合没有共同的元素,则返回 True;否则返回 False。
issubset(other_set)如果该集合是另一个集合的子集,则返回 True;否则返回 False。
issuperset(other_set)如果该集合是另一个集合的超集,则返回 True;否则返回 False。
pop()随机移除并返回集合中的一个元素。
remove(element)移除集合中指定的元素。若元素不存在,将引发 KeyError 错误。
symmetric_difference(other_set)返回该集合与其他集合的对称差集。
symmetric_difference_update(other_set)移除该集合中与其他集合相同的元素,并更新原集合。
union(other_set[, …])返回该集合与其他集合的并集。
update(other_set[, …])向集合中添加其他集合的元素,并更新原集合。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102424.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习之进程

1.进程间通信概述 UNIX系统IPC是各种进程通信方式的统称。 2.管道通信原理 特点: 1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 2.它只能用于具有亲缘关系的进程之间通信(也是父子进程或者…

基于springboot跟redis实现的排行榜功能(实战)

概述 前段时间,做了一个世界杯竞猜积分排行榜。对世界杯64场球赛胜负平进行猜测,猜对1分,错误0分,一人一场只能猜一次。 1.展示前一百名列表。 2.展示个人排名(如:张三,您当前的排名106579)。 一.redis so…

K8S访问控制------认证(authentication )、授权(authorization )、准入控制(admission control )体系

一、账号分类 在K8S体系中有两种账号类型:User accounts(用户账号),即针对human user的;Service accounts(服务账号),即针对pod的。这两种账号都可以访问 API server,都需要经历认证、授权、准入控制等步骤,相关逻辑图如下所示: 二、authentication (认证) 在…

23062day6

作业:将dict.txt导入到数据库中。 方法1:创建shell脚本, 调用指令创建数据库和表格,使用循环在循环中用数组存储dict.txt的内容并插入表格中。 方法2:在终端创建数据库和表格,将dict.txt中的内容手动输入…

带纽扣电池产品出口澳洲安全标准,纽扣电池IEC 60086认证

澳大利亚政府公布了《消费品(纽扣/硬币电池)安全标准》和《消费品(纽扣/硬币电池)信息标准》。届时出口纽扣/硬币电池以及含有纽扣/硬币电池产品到澳大利亚的供应商,必须遵守这些标准中的要求。 一、 安全标准及信息标…

db2迁移至oracle

1.思路 (1)用java连接数据库(2)把DB2数据导出为通用的格式如csv,json等(3)导入其他数据库,比如oracle,mongodb。这个方法自由发挥的空间比较大。朋友说他会用springboot…

yolov5的pytorch配置

1. conda create -n rdd38 python3.82、pip install torch1.8.0 torchvision0.9.0 torchaudio0.8.0 -f https://download.pytorch.org/whl/cu113/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple 3、conda install cudatoolkit10.2

在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答

您可以通过集简云数据流程,将语聚AI助手集成到抖音视频评论、抖音私信,实现自动回复用户视频评论、私信问答,大大提升账号互动与运营效率。 效果如下: 自动化流程: ● 抖音普通号评论对接语聚AI(点击可一…

CSS 一个好玩的卡片“开卡效果”

文章目录 一、用到的一些CSS技术二、实现效果三、代码 一、用到的一些CSS技术 渐变 conic-gradientbox-shadowclip-path变换、过渡 transform、transition动画 animation keyframes伪类、伪元素 :hover、::before、::after …绝对布局。。。 clip-path 生成网站 https://techb…

聊聊每日站会

这是鼎叔的第七十四篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 每日站会是一线敏捷团队自己的会议,快速同步成员为达成迭代目标所…

TensorRT来加速YOLO v5推理与检测

TensorRT来加速YOLO v5推理与检测 文章目录 TensorRT来加速YOLO v5推理与检测TensorRT简介一、TensorRT安装1. 电脑基础环境2. 查看 cuda 版本3. 安装TensorRT4. 验证TensorRT 二、YOLO v5模型导出函数1.onnx 模型导出(def export_onnx()函数…

【小吉送书—第一期】Kali Linux高级渗透测试

文章目录 🍔前言🛸读者对象🎈本书资源🎄彩蛋 🍔前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查&#x…

2023-09-02 LeetCode每日一题(最多可以摧毁的敌人城堡数目)

2023-09-02每日一题 一、题目编号 2511. 最多可以摧毁的敌人城堡数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 ,0 或者 1 ,其中&…

C语言:截断+整型提升+算数转换练习

详情关于整型提升、算数转换与截断见文章: 《C语言:整型提升》 《C语言:算数转换》 一、代码一 int main() { char a -1; signed char b -1; unsigned char c -1; printf("%d %d %d", a, b, c); return 0; } 求…

Level-based Foraging 多智能体游戏仿真环境

游戏场景测试 参考链接: https://kgithub.com/semitable/lb-foraging

Linux系统中u-boot启动流程分析(详解)

大家好,我是ST小智,今天给大家分享一下,u-boot的启动流程。 今天给大家全面的分析一下u-boot启动流程。整理这篇文章花费时间较长,中间很长时间未更新,希望这篇文章对大家有所帮助。 本章主要是详细的分析一下uboot的…

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》

一、架构图 如下图所示: 二、环境信息 1、部署规划主机名K8S版本系统版本内核版本IP地址备注k8s-master-631.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点k8s-master-641.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + …

Python语音识别处理详解

概要 人们对智能语音助手的需求不断提高,语音识别技术也随之迅速发展。在这篇文章中,我们将介绍如何使用Python的SpeechRecognition和pydub等库来实现语音识别和处理,从而打造属于自己的智能语音助手。 1. 什么是语音识别? 语音…

一文速学-让神经网络不再神秘,一天速学神经网络基础(五)-最优化

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

打车系统网约车系统开发支持APP公众号H5小程序版本源码

一、操作流程 二、业务模式 三、用户端 用户注册登录:未注册的手机号将自动创建账号 通过好友的邀请链接进行注册,将会绑定上下级关系 也可以注册的时候输入好友的邀请码,也可以绑定关系 用户充值: 用户下单支付时,可以…