Python学习——【4.5】数据容器:set集合

news2024/12/23 2:33:27

文章目录

  • 【4.5】数据容器:set集合
    • 一、集合的定义格式
    • 二、集合的特点
    • 三、集合的常见操作
    • 四、集合的遍历

【4.5】数据容器:set集合

一、集合的定义格式

为什么使用集合

  我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为什么又需要学习集合类型呢?

  通过特点来分析:

  1.列表可修改,支持重复元素且有序;

  2.元组、字符串不可修改,支持重复元素且有序。

  能否看出它们的局限性?

  局限就在于:它们都支持重复元素。

  如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

  而集合,最主要的特点就是:不支持元素重复(自带去重功能),并且内容无序。

集合的定义

  基本语法:

# 定义集合字面量
{元素, 元素, ..., 元素}

# 定义集合变量
变量名称 = {元素, 元素, ..., 元素}

# 定义空集合
变量名称 = set()

  和列表、元组、字符串等定义基本相同:

  • 列表使用[]
  • 元组使用()
  • 字符串使用""
  • 集合使用{}

  示例:

my_set = {"A", "B", "C", "A", "B", "C", "A", "B", "C"}
my_set_empty = set()  # 定义空集合

print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}")

  输出结果:

my_set的内容是:{'A', 'C', 'B'},类型是:<class 'set'>
my_set_empty的内容是:set(),类型是:<class 'set'>

  可见,对于集合,是不允许重复的,会自动去重。并且是无序的,输出的顺序与原本内容顺序是不一致的。

二、集合的特点

  集合有如下特点:

  • 可以容纳多个数据;
  • 可以容纳不同类型的数据;
  • 数据是无序存储的(不支持下标索引);
  • 不允许重复数据存在;
  • 可以修改;
  • 支持for循环。

三、集合的常见操作

  首先,因为集合是无序的,所以集合不支持下标索引访问

  但是集合和列表一样,是允许修改的。

image-20240923112542040

  • 添加新元素
# 语法
集合.add(元素)

  将指定元素,添加到集合内。

my_set = {"Hello", "World"}
my_set.add("zhangsan")
print(my_set)  # {'zhangsan', 'Hello', 'World'}

  结果:集合本身被修改,添加了新元素。

  • 移除元素
# 语法
集合.remove(元素)

  将指定元素,从集合内移除。

my_set = {"Hello", "World", "zhangsan"}
my_set.remove("Hello")
print(my_set)  # {'zhangsan', 'World'}
  • 从集合中随机取出元素
# 语法
集合.pop()

  从集合中随机取出一个元素。(注意,这个随机不是指同一段程序多次执行、每次运行结果都不一样。而是指我们并不知道它给我们取出的元素是哪一个,这种“随机”)

my_set = {"Hello", "World", "zhangsan"}
element = my_set.pop()
print(my_set)  # {'Hello', 'World'}
print(element)  # zhangsan
  • 清空集合
my_set = {"Hello", "World", "zhangsan"}
my_set.clear()
print(my_set)  # set()
  • 取出2个集合的差集
# 语法
集合1.difference(集合2)

  取出集合1和集合2的差集(即:集合1有,而集合2没有的)。

set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(set3)  # {2, 3}
print(set1)  # {1, 2, 3}
print(set2)  # {1, 5, 6}

  结果:得到一个新集合,原有的集合1和集合2不变。

  • 消除2个集合的差集
# 语法
集合1.difference_update(集合2)

  对比集合1和集合2,在集合1内,删除和集合2相同的元素

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

  结果:集合1被修改,集合2不变。

  • 2个集合合并
# 语法
集合1.union(集合2)

  将集合1和集合2组合成新集合。

set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(set3)  # {1, 2, 3, 5, 6}
print(set1)  # {1, 2, 3}
print(set2)  # {1, 5, 6}

  结果:得到新集合,原有的集合1和集合2不变。

  • 统计集合元素数量
set1 = {1, 2, 3, 4, 5}
num = len(set)
print(num)  # 5

set2 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set)
print(num)  # 5

四、集合的遍历

  集合不支持下标索引,因此不能用while循环。

  但是可以用for循环。

set = {1, 2, 3, 4, 5}
for element in set:
    print(f"集合的元素有:{element}")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day4-C语言高级编程

1. gcc和gdb的用法 GNU工具&#xff1a;编译工具&#xff1a;把一个源程序编译为一个可执行程序调试工具&#xff1a;能对执行程序 进行源码或汇编调试软件工程工具&#xff1a;用于协助多人开发或大型软件项目的管理&#xff0c;如make、CVS、Subvision其他工具&#xff1a;用…

DHCP服务器搭建

1. DHCP工作原理 DHCP动态分配IP地址&#xff0c;客户端广播&#xff0c;服务端单播 2. DHCP服务器安装 2.1 安装DHCP # yum install -y dhcp-server 2.2 修改配置文件 # cd /etc/dhcp/ # ls # vi dhcpd.conf dhcpd.conf 主配置文件 第一行&#xff1a;全局dhcp服务器地…

STM32cubeMX + VScode开发GD32移植(HAL库通用),保姆级!!!!!!!

STM32cubeMX VScode开发GD32移植(HAL库通用)&#xff0c;保姆级&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 文章目录 STM32cubeMX VScode开发GD32移植(HAL库通用)&#xff0c;保姆级&#xff01;&#xff01;&#xff01;&#…

构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)

引言 云计算与数据库服务 云计算作为一种革命性的技术&#xff0c;已经深刻改变了信息技术行业的面貌。它通过提供按需分配的计算资源&#xff0c;使得数据存储、处理和分析变得更加灵活和高效。在云计算的众多服务中&#xff0c;数据库服务扮演着核心角色。数据库服务不仅负…

828华为云征文 | 云服务器Flexus X实例:RAG 开源项目 FastGPT 部署,玩转大模型

目录 一、FastGPT 简介 二、FastGPT 部署 2.1 下载启动文件 2.2 开放端口权限 2.3 启动 FastGPT 三、FastGPT 运行 3.1 登录 FastGPT 3.2 知识库 3.3 应用 四、总结 本篇文章主要通过 Flexus云服务器X实例 部署 RAG 开源项目 FastGPT&#xff0c;通过 FastGPT 可以使…

【5】AT32F437 OpenHarmony轻量系统移植教程(2)

开源地址&#xff1a;https://gitee.com/AT32437_OpenHarmony 学习本文档的意义 1.学习移植OpenHarmony轻量系统到AT32全系列mcu上&#xff0c;本文档移植的具体型号为AT32F437ZMT7 2.学习OpenHarmony轻量系统开发 3.适配vprintf, vfprintf, printf, snprintf 和sprintf 1…

Mybatis自定义TypeHandler,直接存储枚举类对象

在这篇文章中&#xff0c;我们已经知道如何使用枚举类直接接受前端的数字类型参数&#xff0c;省去了麻烦的转换。如果数据库需要保存枚举类的code&#xff0c;一般做法也是代码中手动转换&#xff0c;那么能不能通过某种机制&#xff0c;省去转换&#xff0c;达到代码中直接保…

中间件安全(二)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 前文链接&#xff1a;中间件安全&#xff08;一&#xff09; 本文主要讲解Couchdb数据库未授权越权漏洞&#xff08;CVE-2017-12635&#xff09;。 靶场链接&#xff1a;Vu…

(11)(2.1.2) DShot ESCs(三)

文章目录 前言 5 附加配置 前言 DShot 是一种数字 ESC 协议&#xff0c;它允许快速、高分辨率的数字通信&#xff0c;可以改善飞行器控制&#xff0c;这在多旋翼和 quadplane 应用中特别有用。 5 附加配置 DShot更新率 发送 DShot 脉冲的频率可以通过SERVO_DSHOT_RATE配置…

jvm中的程序计数器、虚拟机栈和本地方法栈

引言 本文主要介绍一下jvm虚拟机中的程序计数器、虚拟机栈和本地方法栈。 程序计数器 作用 作用&#xff1a;记录下一条jvm指令的执行地址。 下面具体描述一下程序计数器的作用。 这里有两个代码&#xff0c;右边的为源代码&#xff0c;左边为编译之后的字节码。 当我们…

#面试系列-腾讯后端一面

03.腾讯后端一面 项目相关 面试官可能是 Go 方向的&#xff0c;我面试的是 Java 方向的&#xff0c;所以面试官也没有问我简历上的项目&#xff0c;主要问了实验室中做的项目&#xff0c;哪个项目比较有技术挑战&#xff1f; 面试主要问了计算级网络相关&#xff0c;以及如果让…

企业应该怎样合理使用AI技术与混合云?

企业合理使用AI技术和混合云的关键在于明确业务目标、评估技术需求并制定相应的战略规划。下面是一些指导原则和步骤&#xff0c;可以帮助企业有效地结合AI技术和混合云&#xff1a; 1. 定义业务目标 明确需求&#xff1a;确定哪些业务流程可以通过AI优化&#xff0c;哪些数据处…

Python和R及MATLAB和C与Lua去相关生物医学图像处理和神经网络物理学及数学变换算法

&#x1f3af;要点 主成分分析降维显微镜成像精度评估算法脑电图磁共振成像降噪算法图像颜色分离显现特征球面转换:主成分分析和零相位分量分析零相位分量分析和主成分分析平均互相关算法图像白化计算噪声协方差和绘制白化数据高能物理分类器分离不同信号白化变换优化批量归一…

【贪心算法】贪心算法二

贪心算法二 1.最长递增子序列2.递增的三元子序列3.最长连续递增序列 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.最长递增子序列 题目链…

828华为云征文 | 使用Flexus X实例搭建Dubbo-Admin服务

一、Flexus X实例简介 华为云推出的Flexus云服务&#xff0c;作为专为中小企业及开发者设计的新一代云服务产品&#xff0c;以其开箱即用、体验卓越及高性价比而著称。其中的Flexus云服务器X实例&#xff0c;更是针对柔性算力需求量身打造&#xff0c;能够智能适应业务负载变化…

pick你的第一个人形机器人——青龙强化学习环境测试

文章目录 一、环境配置二、开始训练三、训练成果 最近感受到的大趋势是具身智能&#xff0c;强化学习&#xff0c;模仿学习做人形机器人&#xff0c;这个赛道很火&#xff0c;颇有前些年全力投入做自动驾驶的架势&#xff0c;正好最近用强化学习解决POMDP问题接触到了强化学习&…

Java研学-数据字典(一)

一 需求分析 1 分析 在项目中会有很多的下拉框&#xff0c;这些下拉框的特点&#xff0c;就是以键值对的形式存在&#xff0c;其中 value&#xff08;如 id&#xff1a;1&#xff0c;2… &#xff09;&#xff0c;key&#xff08;展示给用户的内容&#xff09;&#xff0c;数据…

SSC338D/SSC338Q CA7*2+IPU5M/Multi-sensorISP: HDR/3DNR

SSC338D/SSC338Q系列产品是高度集成的多媒体片上系统&#xff08;SoC&#xff09;产品&#xff0c;适用于IP摄像机、车载摄像机和USB摄像机等高分辨率智能视频录制应用。该芯片包括32位双核RISC处理器、高级图像信号处理器&#xff08;ISP&#xff09;、高性能MJPEG/H.264/H.26…

Maven-三、聚合

Maven 文章目录 Maven前言创建聚合模块设置管理的子模块总结 前言 在使用了maven进行多模块开发后&#xff0c;随着模块变多会变得难以管理&#xff0c;所以需要使用聚合模块进行统一管理。 分模块开发的项目中会有多个模块&#xff0c;那么可以单独使用一个模块专门管理整个工…

毫米波雷达预警功能 —— 倒车预警(RCTA)

文档声明&#xff1a; 以下资料均属于本人在学习过程中产出的学习笔记&#xff0c;如果错误或者遗漏之处&#xff0c;请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。 笔记资料仅供学习交流使用&#xff0c;转载请标明出处&#xff0c;谢谢配…