【python全栈系列】day07-python数据类型-集合

Python中的集合(Set)是一个无序的、不包含重复元素的数据结构。它主要用于数学上的集合操作,如并集、交集、差集和对称差集等。集合的基本用途包括去重和关系测试。

1、集合的特性

  • 无序性:集合中的元素是无序的,这意呀着集合不支持索引操作。
  • 唯一性:集合中的元素是唯一的,不允许有重复的元素。
  • 可变性:集合是可变的,即可以在创建后添加或删除元素。

2、集合的创建

集合可以使用大括号 {} 创建,但需要注意的是,空集合不能使用 {}(这会创建一个空字典),而应该使用 set()。

# 创建一个空集合  
my_set = set()  
  
# 创建一个包含几个元素的集合  
my_set = {1, 2, 3, 4, 5}  
  
# 注意:集合中的元素是无序的  
print(my_set)  # 输出可能不是 {1, 2, 3, 4, 5},因为集合是无序的

3、集合的操作

3.1、添加元素

使用 .add() 方法可以向集合中添加一个元素。

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

3.2、删除元素

  • remove(element):如果元素存在于集合中,则将其移除。如果元素不存在,则抛出 KeyError。
  • discard(element):如果元素存在于集合中,则将其移除。如果元素不存在,则不执行任何操作。
  • pop():随机移除集合中的一个元素并返回它。如果集合为空,则抛出 KeyError。
my_set = {1, 2, 3, 4}  
my_set.remove(2)  
print(my_set)  # 输出: {1, 3, 4}  
  
my_set.discard(5)  # 5 不在集合中,不会抛出异常  
print(my_set)  # 输出: {1, 3, 4}  
  
pop_element = my_set.pop()  
print(pop_element)  # 输出集合中的一个随机元素  
print(my_set)  # 集合中少了一个元素

3.3、集合的运算

  • 并集:使用 | 运算符或 .union() 方法可以求两个集合的并集。
  • 交集:使用 & 运算符或 .intersection() 方法可以求两个集合的交集。
  • 差集:使用 - 运算符或 .difference() 方法可以求两个集合的差集(第一个集合中有但第二个集合中没有的元素)。
  • 对称差集:使用 ^ 运算符或 .symmetric_difference() 方法可以求两个集合的对称差集(存在于一个集合中但不同时存在于两个集合中的元素)。
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.4、集合的其他方法

  • isdisjoint(other):如果两个集合没有交集,则返回 True。
  • issubset(other) 或 <=:如果集合是另一个集合的子集,则返回 True。
  • issuperset(other) 或 >=:如果集合是另一个集合的超集,则返回 True。
  • update(*others):用其他集合的元素更新集合,即求并集后赋值给原集合。
  • clear():移除集合中的所有元素。

集合是Python中一个非常有用的数据结构,它提供了快速的去重和集合运算功能。

4、集合和list的区别

集合(Set)和列表(List)是Python中两种不同类型的数据结构,它们之间存在多个显著的区别。以下是集合和列表之间区别的清晰归纳:

4.1 有序性

  • 列表(List):列表中的元素是有序的,即元素按照它们被插入的顺序进行存储。这意味着你可以通过索引(位置)来访问列表中的元素。
  • 集合(Set):集合中的元素是无序的,即元素存储的顺序是不确定的。因此,你不能通过索引来访问集合中的元素。

4.2 唯一性

  • 列表(List):列表中的元素可以重复,即列表中可以有多个相同的元素,每个元素都有一个唯一的索引。
  • 集合(Set):集合中的元素是唯一的,不允许有重复的元素。如果尝试向集合中添加一个已经存在的元素,该操作将不会改变集合。

4.3 表示方式

  • 列表(List):列表使用方括号 [] 来定义,元素之间用逗号分隔。例如:my_list = [1, 2, 2, 3, 4]。
  • 集合(Set):集合使用大括号 {} 来定义(但注意空集合不能使用 {},因为这会创建一个空字典,应该使用 set())。元素之间也用逗号分隔。例如:my_set = {1, 2, 3, 4}(注意集合会自动去除重复元素)。

4.4 用途

  • 列表(List):列表适合用于存储有序的、可能会重复的元素。它可以用于多种场景,如存储数据、快速访问数据(通过索引)、修改数据等。
  • 集合(Set):集合适合用于存储无序的、不重复的元素。它主要用于去重和集合运算(如并集、交集、差集和对称差集)。由于集合中的元素是唯一的,它还可以用于成员关系测试。

4.5 性能

  • 列表(List):列表在插入和删除元素时,特别是在列表的开头或中间插入元素时,可能需要移动其他元素,因此性能可能不是最优的。
  • 集合(Set):集合基于哈希表实现,因此在进行成员关系测试、添加和删除元素时通常具有更好的性能。但是,由于集合是无序的,因此不支持索引访问,这可能会影响某些操作的性能。

总结

  • 列表(List)是一种有序的数据结构,可以包含重复元素,适用于需要保持顺序和允许重复元素的情况。
  • 集合(Set)是一种无序的、不包含重复元素的数据结构,适用于需要快速查找元素和去除重复元素的情况。
  • 这两种数据结构各有优缺点,选择哪种取决于你的具体需求。

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

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

相关文章

类型“{}”上不存在属性“xxxx”。ts(2339)

解决&#xff1a;类型“{}”上不存在属性“xxxx”和非类型化函数调用不能接受类型参数等问题。 问题发现 今天一个学生&#xff0c;发我一张图&#xff08;如下&#xff09;。 他从远端拉取到本地&#xff08;自家电脑&#xff09;后打开的代码视图&#xff0c;一大堆抛红。问…

Golang | Leetcode Golang题解之第212题单词搜索II

题目&#xff1a; 题解&#xff1a; type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

【鸿蒙学习笔记】基础组件 Button

官方文档&#xff1a;按钮 (Button)添加链接描述 官方文档&#xff1a;button开发指导 目录标题 属性迭代完善不含子组件的按钮包含子组件的按钮ButtonType添加事件跳转超链接提交表单悬浮按钮 属性迭代完善 不含子组件的按钮 Column({ space: 10 }) {Row() {Button(添加子目…

CentOS 7 停止维护(2024-6-30)后可用在线yum源 —— 筑梦之路

众所周知&#xff0c;centos 7 在2024年6月30日&#xff0c;生命周期结束&#xff0c;官方不再进行支持维护&#xff0c;而很多环境一时之间无法完全更新替换操作系统&#xff0c;因此对于yum源还是需要的&#xff0c;特别是对于互联网环境来说&#xff0c;在线yum源使用方便很…

NoSQL之Redis优化

目录 一、Redis 高可用 二、Redis 持久化 1.RDB 持久化 1&#xff09;触发条件 2&#xff09; 执行流程 3&#xff09;启动时加载 2.AOF 持久化 1&#xff09;开启AOF 2&#xff09;执行流程 3&#xff09;启动时加载 3.RDB和AOF的优缺点 三、Redis 性能管理 1.查…

【Dison夏令营 Day 07】用 Python 和 Rich 制作 Wordle克隆(下篇)

在大流行期间&#xff0c;Wordle 在 Twitter 上还算比较流行的一款基于网络的益智游戏&#xff0c;要求玩家每天在六次或更短时间内猜出一个新的五个字母的单词&#xff0c;每个人得到的单词都是一样的。 在本教程中&#xff0c;你将在终端上创建自己的 Wordle 克隆。自 2021 …

分享一款Type C接口USB转2路485模块【带完整原理图】

大家好&#xff0c;我是『芯知识学堂』的SingleYork&#xff0c;今天给大家分享一款很实用的工具–基于Type C接口的USB转2路485模块。 这款模块主芯片采用南京沁恒的CH342F这款芯片&#xff0c;芯片特性如下&#xff1a; 该系列芯片有QFN24和ESSOP10 这2种封装&#xff0c;…

深度网络现代实践 - 深度前馈网络之结构设计篇

序言 深度网络结构设计作为人工智能领域的基石&#xff0c;正引领着技术创新的浪潮。通过模拟人脑神经元间的复杂连接&#xff0c;深度神经网络展现了卓越的特征学习与模式识别能力。随着大数据与计算能力的提升&#xff0c;设计高效、精准且泛化能力强的深度网络结构成为研究…

深度探索“目录名称无效“:原因、解决方案与最佳实践

目录名称无效&#xff1a;现象背后的秘密 在日常使用电脑或移动设备时&#xff0c;我们时常会遇到“目录名称无效”的错误提示&#xff0c;这一提示仿佛是一道无形的屏障&#xff0c;阻断了我们与重要数据的联系。从本质上讲&#xff0c;“目录名称无效”意味着系统无法识别或…

基于正点原子FreeRTOS学习笔记——时间片调度实验

目录 一、时间片调度介绍 二、实验演示 1、宏修改 1.1、滴答定时器宏 1.2、调度器宏 2、实验程序 2.1.1、任务1&#xff0c;任务2不加临界区程序 2.1.2 实验现象 2.2.1、任务1&#xff0c;任务2加临界区程序 2.2.2 实验现象 一、时间片调度介绍 时间片&#xff1a;同…

Golang中defer和return顺序

在Golang中&#xff0c;defer 和 return 的执行顺序是一个重要的特性&#xff0c;它们的执行顺序如下&#xff1a; return语句不是一条单独的语句&#xff0c;实际上&#xff0c;它是由赋值和返回两部分组成的。赋值步骤会先执行&#xff0c;这一步会计算return语句中的表达式…

【后端面试题】【中间件】【NoSQL】MongoDB的配置服务器、复制机制、写入语义和面试准备

MongoDB的配置服务器 引入了分片机制之后&#xff0c;MongoDB启用了配置服务器(config server) 来存储元数据&#xff0c;这些元数据包括分片信息、权限控制信息&#xff0c;用来控制分布式锁。其中分片信息还会被负责执行查询mongos使用。 MongoDB的配置服务器有一个很大的优…

【C语言】const 关键字

在C语言中&#xff0c;const关键字用于定义常量&#xff0c;使得变量的值在其声明之后无法被修改。这可以帮助防止意外修改数据&#xff0c;提高代码的安全性和可读性。以下是有关const关键字的一些详细说明&#xff1a; 基本用法 const int max_value 100;在这个例子中&…

Zynq系列FPGA实现SDI视频编解码+图像缩放,基于GTX高速接口,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB纯V…

FastApi中的常见请求类型

FastApi中的常见请求类型 后端开发语言中&#xff0c;我钟情于node&#xff0c;高效的异步处理真是让我眼前一亮&#xff0c;同时&#xff0c;简单易懂的语法也让我非常倾心 但是但是&#xff0c;因为考虑要写一个深度学习算法的后端接口&#xff0c;所以不得不选用python作为…

容器安全:等保合规性的基石

随着云计算和微服务架构的蓬勃发展&#xff0c;容器技术已经成为现代IT基础设施不可或缺的一部分。在网络安全等级保护制度&#xff08;等保&#xff09;的框架下&#xff0c;容器安全的要求日益凸显&#xff0c;成为等保合规性的基石。本文将深入探讨容器安全在等保中的重要性…

nginx的配置文件

nginx.conf 1、全局模块 worker_processes 1; 工作进程数&#xff0c;设置成服务器内核数的2倍&#xff08;一般不超过8个&#xff0c;超过8个反正会降低性能&#xff0c;4个 1-2个 &#xff09; 处理进程的过程必然涉及配置文件和展示页面&#xff0c;也就是涉及打开文件的…

让围绕数据库构建大模型应用更简单方便--DB-GPT

DB-GPT的目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力&#xff0c;让围绕数据库构建大模型应用更简单&#xff0c;更方便。 1 处理流程 DB-GPT系…

问题集锦1

01.inner中使用JwtTokenUtil.getUserCode() 前端调用上传&#xff08;java&#xff09;&#xff0c;上传使用加购 Overridepublic Boolean insertShoppingCart(InsertShoppingCartParamsDto dto) {// 通过userCode,itemCode和supplierCode来判断当前加购人添加到购物车的商品是…

美术馆预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;展品信息管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;美术馆管理&#xff0c;基础数据管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;美术馆&#xff…