小甲鱼Python06 序列字典集合

一、序列

1.id函数 is运算符

我们首先思考下字符串、元组、列表的共同点:

都有很多共同的运算符。都可以通过索引来获取元素,第一个元素索引都是0,都可以通过切片的方法获取某个范围内元素的集合。

以上三种统称为序列。序列分为可变序列和不可变序列。

+ 表示两个序列进行拼接,*表示重复。

Python中的每一个对象都有三个部分:类型、值、地址。id 函数返回一个对象的具体内存地址。

is 和is not称为同一性运算符。is运算符用来判断两个对象是否指向唯一地址的引用,尽管值相同,地址可能不同,is运算符仍然返回FALSE。

注意看这里,不可变序列进行乘2操作时,它的地址没有改变;而可变序列进行乘2操作,地址改变

2.in 和not in,del语句

in运算符用于判断一个对象是否在另一个对象里。del语句用于删除一个或多个指定的对象。

3.列表 元组 字符串转换

转换成列表用list函数

转换成元组用tuple函数

转换成字符串用str函数

4.最小最大函数

5.len 和sum函数

len函数对于32位平台来说,最大能检测2^32-1这么长的对象。

sum用于求和。

6.排序和逆转

sort是列表的内置函数,只能对列表起作用,而sorted是普通函数,对列表、字符串、元组都有作用。设定reverse=TRUE,将会逆转列表。

sort会改变原本的列表,而sorted是生成一个 新的列表,原本列表不会更改。

key参数是一个可选参数,用于指定一个函数,该函数将作用于可迭代对象中的每个元素,以生成排序时用于比较的键。元素根据这些键进行排序,而不是直接比较元素本身。

reversed函数返回的是一个反向迭代器,可以用list函数转化为我们想要的列表。

7.all 和any函数

all函数判断是否所有元素的值都为真,any函数判断是否有某个元素的值为真。

8.enumerate列举函数

将一个可迭代对象生成一个枚举对象,该对象包含每个元素的索引和对应的值,常用于循环迭代时获取元素的索引位置。

9.zip函数

可以看到,当长度不匹配时,我们以最短的为准。如果想要以最长的为准,我们需要用itertools模块的zip_longest函数

10.map函数

map() 函数会对每个可迭代对象中的元素依次应用 function 函数,并将结果组成一个新的可迭代对象返回。如果传入的可迭代对象长度不等,则 map() 函数会以最短的可迭代对象为准,其他较长的可迭代对象的元素将被忽略。

11.可迭代对象与迭代器

迭代器一定是可迭代对象。不过迭代器只能使用一次,而可迭代对象一直可以使用,

filter()函数是内置函数之一,用于过滤可迭代对象中的元素,返回满足指定条件的元素的迭代器。

iter函数用于将可迭代对象转化为迭代器,next函数可以逐个获取迭代器中的元素。

二、字典

字典是Python中唯一实现映射关系的内置类型。

1.字典基本语法

字典(Dictionary)是一种无序的集合数据类型,用于存储键(key)-值(value)对。字典是可变的,可以添加、删除和修改其中的元素。字典的键必须是唯一的,而值可以是任意的数据类型。

创建字典的二种方式,以及打印获取字典的元素:

增加或者删除字典中的元素:

判断元素是否在字典中,以及获取字典的长度:

快速初始化字典:fromkeys方法

在序列中元素是可以重复的,字典中的项(也就是键值对)是不可以重复的。一个键就是对应一个值,不会重复对应。

删除字典中的元素可以用pop方法:

popitem方法也可以用来删除,在Python3.7之后用于删除最后一个键值对:

如果我们只希望清除字典的内容,可以使用clear方法。

改:修改字典中的值可以用update方法,update方法更新字典中指定键的值,也可以传入一个字典更新全部的键值对。

查找键对应的值用get方法:

查找是否存在一个键用setdefault方法,并且可以指定default参数,用于键不存在时自动添加。

2.获取键值对、键、值的视图对象

items(),values(),keys()方法分别获取键值对、值、键的视图对象。当字典发生更新时,视图对象也一起更新。

3.其它方法与嵌套

copy用于浅拷贝,len用于获取键值对数量,list用于字典转换成列表,iter用于字典转成迭代器。

嵌套字典和列表一样,并不是稀奇事:

4.字典推导式

如上图所示,我们的字典推导式让键值对互换,理由是:items获取到了键值对,键是k,值是v,我们前面重新构成字典的是v:k,这样就完成了键值对互换。

同样的,我们也可以利用推导式获取字符串的编码值:

为什么下面这段代码输出是这样?因为x等于1时,y从2,4,6分别取值,只不过一个键只能对应一个值,因此会被6覆盖掉,其它两个数字同理。

三、集合

集合拥有无序性、互异性,集合内的元素不允许重复,并且集合是无顺序存放的,集合和字典有着密切关系。

1.创建

创建集合有三种方式,集合推导式、set内置函数、直接大括号创建

由于集合元素没有顺序,因此通过下标获取集合元素是不可行的。

检查一个序列是否有重复元素可以利用集合,去重也可以利用集合:

2.子集 超集 对称差

判断集合之间是否不相关:isdisjoint()

是否是子集:issubset()     是否是超集 issuperset()

计算当前集合和其它集合构成的并集、交集、差集:union,intersection,difference

上述这些方法支持多个集合一起求交集、并集、差集。

对称差集合为symmetric_difference()只能支持一个参数

Python提供了运算符来判断集合关系,<=为真子集,<为子集,>为超集,>=为真超集

|为并集,&为交集,-为差集,^为对称差集

3.不可变集合frozen

只适用于set的方法:

同时,求交intersection_update...等等方法,会改变s这个集合,因此也只用于set

注意这里,update方法传入字符串是迭代获取每个元素,但是add方法是传入字符串一个整体。

删除用remove或者discard,不同之处在于remove遇到没有的元素会出现异常,而discard会不进行任何操作。

删除还有pop方法,用于从集合中随机删除一个元素。

4.可哈希

想要正确创建字典和集合,要求字典的键和集合元素都是可哈希的。

可变对象是不可以计算哈希值的。

上图可以看出,集合元素必须是不可变对象。

那么我们如何实现嵌套集合呢?用frozen_set!

集合背后有散列表的支持,而列表则没有,所以,列表的每次查找都要从头到尾地扫描,而集合只需要简单地查表操作。

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

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

相关文章

抖音视频评论采集软件|抖音数据抓取工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;让用户轻松获取抖音视频评论数据。 其中&#xff0c…

JSP实现数据传递与保存(一)

一、Web开发步骤 1.1两类模式 后端——————前端 先有前端&#xff0c;前端用的时候直接调用 后端已实现注册接口&#xff0c;接口名为doRegister.jsp 前端此时&#xff1a; 前端的form表单中的action提交地址就只能填doRegister.jsp&#xff0c;即&#xff1a; <f…

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;接管游戏连接服务器的操作 码云地址&#xff08;master 分支&#xff09;&#xff1a;染指/titan 码云版本号&#xff1a;00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址&#xff0c;在 ti…

Doris——荔枝微课统一实时数仓建设实践

目录 一、业务介绍 二、早期架构及痛点 2.1 早期架构 2.2 架构痛点 三、技术选型 四、新的架构及方案 五、搭建经验 5.1 数据建模 5.2 数据开发 5.3 库表设计 5.4 数据管理 5.4.1 监控告警 5.4.2 数据备份与恢复 六、收益总结 七、未来规划 原文大佬这篇Doris腾…

适配器模式(Adapter Pattern) C++

上一节&#xff1a;原型模式&#xff08;Prototype Pattern&#xff09; C 文章目录 0.理论1.组件2.类型3.什么时候使用 1.实践1.基础接口和类2.类适配器实现3.对象适配器实现 0.理论 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允…

日更【系统架构设计师知识总结3】存储系统

【原创精华总结】自己一点点手打、总结的脑图&#xff0c;把散落在课本以及老师讲授的知识点合并汇总&#xff0c;反复提炼语言&#xff0c;形成知识框架。希望能给同样在学习的伙伴一点帮助&#xff01;

《TCP/IP详解 卷一》第9章 广播和本地组播

目录 9.1 引言 9.2 广播 9.2.1 使用广播地址 9.2.2 发送广播数据报 9.3 组播 9.3.1 将组播IP地址转换为组播MAC地址 9.3.2 例子 9.3.3 发送组播数据报 9.3.4 接收组播数据报 9.3.5 主机地址过滤 9.4 IGMP协议和MLD协议 9.4.1 组成员的IGMP和MLD处理 9.4.2 组播路由…

基于微信小程序的垃圾分类系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vue2 day6 7

1、vuex简介&#xff1a;共享数据 &#xff08;数据在组件中传递 组件通信&#xff09; 2、创建仓库 js中&#xff1a;this.$store 让我们可以在别的组件中访问仓库对象 3、state状态&#xff1a;提供公共数据&#xff08;data只提供当前组件数据&#xff09; 4、mutati…

YOLOv9-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…

apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$@“

[TOC](apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$”) 1、问题描述 apache 启动报错 apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$” 2、问题分析 参考链接: https://stackoverflow.com/questions/43726930/apache…

手机如何使用NFC卡模拟门禁刷卡

部分手机具备NFC卡刷卡功能&#xff0c;理论上也可模拟门禁卡。 一个功能强大且免费的NFC卡模拟器&#xff0c;可模拟各类门禁卡、电梯卡、部分公司&#xff08;工厂&#xff09;工卡或饭卡、部分学校饭卡、部分图书馆借书卡等各类IC卡&#xff0c;用手机替代卡片去刷门禁、刷…

petalinux烧写image.ub报错

xinlinx SDK烧写petalinux生成的BOOT.BIN和image.ub时&#xff0c;BOOT.BIN烧写正常&#xff0c;image.ub烧写报错如下 Erase Operation failed. INFO: [Xicom 50-44] Elapsed time 0 sec.ERROR: Flash Operation Failed串口助手操作擦除flash如图&#xff1a; 解决方法&am…

uniapp 使用安卓模拟器运行调试

uniapp 启动方式有很多种,这里介绍使用模拟器启动uniapp 要使用模拟器启动uniapp肯定少不了安装模拟器(废话) 这里选着浏览器推荐的第一个模拟器mumu模拟器 下载好了mumu安装包后就是安装了,这个过于小白,就不介绍了 2. 查看模拟器的adb端口号, mumu的adb查看端口号与众不同…

Chiplet技术与汽车芯片(一)

目录 1.摩尔定律放缓 2.Chiplet的优势 2.1 提升芯片良率、降本增效 2.2 设计灵活&#xff0c;降低设计成本 2.3 标准实行&#xff0c;构建生态 3.Chiplet如何上车 22年8月左右&#xff0c;Chiplet概念突然在二级市场火了起来&#xff0c;封测四小龙华天、长电、通富微电、…

Lua速成(2)

一、流程控制 Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码&#xff0c;在条件为 false 时执行其他指定代码。 控制结构的条件表达式结果可以是任何值&#xff0c;Lua认为false和nil为假&#xff0c;true和非nil为真。 …

深入探究Nginx的使用方法

目录 引言 一、网络状态页 二、Nginx 第三方模块 三、变量 &#xff08;一&#xff09;内置变量 &#xff08;二&#xff09;自定义变量 四、自定义日志 &#xff08;一&#xff09;有关日志的配置信息 &#xff08;二&#xff09;error日志的设置 1.日志的等级 2.自…

Coursera吴恩达机器学习专项课程02:Advanced Learning Algorithms 笔记 Week01

Advanced Learning Algorithms Week 01 笔者在2022年7月份取得这门课的证书&#xff0c;现在&#xff08;2024年2月25日&#xff09;才想起来将笔记发布到博客上。 Website: https://www.coursera.org/learn/advanced-learning-algorithms?specializationmachine-learning-in…

模板的初阶

目录 【本节目标】 1.泛型编程 2.函数模板 2.1函数模板概念 2.1 函数模板格式 2.3函数模板的原理 2.4函数模板的实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 【本节目标】 1. 泛型编程 2. 函数模板 3. 类模板 1.泛型编程 如何实现…

如何将简历项目部署到自己的域名下

通过上一篇文章我们得知如何在Github上Fork项目到自己账号下&#xff0c;还有学会配置好简历项目并部署上线&#xff0c;接下来我们就来看一下该项目是如何部署到自己的域名下的 &#x1f447; 在项目文档中可以看到该简历项目是部署在Vercel上的&#xff0c;首先打开Vercel的官…