小甲鱼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.mfbz.cn/a/413289.html

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

相关文章

安装极狐GitLab Runner并测试使用

本文继【新版极狐安装配置详细版】之后继续 1. 添加官方极狐GitLab 仓库&#xff1a; 对于 RHEL/CentOS/Fedora&#xff1a; curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash2. 安装最新版本的极狐G…

多进程服务端进程框架

对父进程来说&#xff0c;不需要客户端连接的socket&#xff0c;对子进程来说,不需要监听的socket。代码中标出了两行关闭对应socket的函数 上图可见&#xff0c;对应的关闭了以后&#xff08;3是服务端监听的socket&#xff0c;4是客户端连上来的socket&#xff09; 通过上图…

【GPTs分享】每日GPTs分享之Image Generator Tool

今日GPTs分享&#xff1a;Image Generator Tool。Image Generator Tool是一种基于人工智能的创意辅助工具&#xff0c;专门设计用于根据文字描述生成图像。这款工具结合了专业性与友好性&#xff0c;鼓励用户发挥创造力&#xff0c;同时提供高效且富有成效的交互体验。 主要功能…

10:00面试,10:05就出来了,问的问题过于变态了。。。

我从一家小公司转投到另一家公司&#xff0c;期待着新的工作环境和机会。然而&#xff0c;新公司的加班文化让我有些始料未及。虽然薪资相对较高&#xff0c;但长时间的工作和缺乏休息使我身心俱疲。 就在我逐渐适应这种高强度的工作节奏时&#xff0c;公司突然宣布了一则令人…

C++ Webserver从零开始:代码书写(十四)——http连接处理

前言 HTTP类是Webserver到目前为止最为庞大的类。其实最开始我是只想分析它的部分代码&#xff0c;但是最后我还咬咬牙将http连接处理的全代码分析写完了。因此&#xff0c;本文会特别的长&#xff0c;我相信没人可以把它一口气全部读完。不过我在本文中进行了细致的目录划分&a…

部署roop实现视频人脸替换

roop只需要一张人脸的图像&#xff0c;就可以替换视频中的脸。不需要数据集和模型训练。 下载对应版本的cudnn https://developer.nvidia.com/rdp/cudnn-archivehttps://developer.nvidia.com/rdp/cudnn-archive解压后的三个文件夹拷贝到cuda的目录 C:\Program Files\NVIDIA…

【非递归版】归并排序算法(2)

目录 MergeSortNonR归并排序 非递归&归并排序VS快速排序 整体思想 图解分析​ 代码实现 时间复杂度 归并排序在硬盘上的应用&#xff08;外排序&#xff09; MergeSortNonR归并排序 前面的快速排序的非递归实现&#xff0c;我们借助栈实现。这里我们能否也借助栈去…

uniapp实现单选框

采用uniapp-vue3实现的一款单选框组件&#xff0c;提供丝滑的动画选中效果&#xff0c;支持不同主题配置&#xff0c;适配web、H5、微信小程序&#xff08;其他平台小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net…

SpringCloudAlibaba全家桶介绍

Spring Cloud Alibaba Spring Cloud Alibaba 是什么&#xff1f;微服务全景图核心特色 大家好&#xff0c;我叫阿明。下面我会为大家准备Spring Cloud Alibaba系列知识体系&#xff0c;结合实战输出案列&#xff0c;让大家一眼就能明白得技术原理&#xff0c;应用于各公司得各…

二次供水物联网:HiWoo Cloud助力城市水务管理升级

随着城市化的快速推进&#xff0c;二次供水系统作为城市基础设施的重要组成部分&#xff0c;其稳定运行和高效管理显得至关重要。然而&#xff0c;传统的二次供水管理方式在应对复杂多变的城市供水需求时&#xff0c;显得力不从心。为了破解这一难题&#xff0c;HiWoo Cloud平台…

VsCode的leetcode插件无法登录

前提 想使用VsCode的leetcode插件进行刷题&#xff0c;然后按照网上的教程进行安装下载&#xff0c;但是到了登录这一步&#xff0c;死活也登录不了&#xff0c;然后查看log一直报的错误是invalid password。 解决方法 首先确定在插件中设置的站点是Leetcode中国&#xff0c…

【Java EE初阶二十五】简单的表白墙(一)

1. 前端部分 1.1 前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…

继电器测试中需要注意的安全事项有哪些?

继电器广泛应用于电气控制系统中的开关元件&#xff0c;其主要功能是在输入信号的控制下实现输出电路的断开或闭合。在继电器测试过程中&#xff0c;为了确保测试的准确性和安全性&#xff0c;需要遵循一定的安全事项。以下是在进行继电器测试时需要注意的安全事项&#xff1a;…

【代码随想录python笔记整理】第十三课 · 链表的基础操作 1

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、链表 在之前的学习中,我们接触到了字符串和数组(列表)这两种结构,它们具有着以下的共同点:1、元素按照一定的顺序来排列。2、可以通过索引来访问数组中的元素和字符串中的字符。由此,…

go环境安装-基于vscode的Windows安装

1、vscode安装 官网链接&#xff1a;https://code.visualstudio.com/ 选择相应的版本&#xff0c;这里选择Windows下的 下载得到一个VSCodeUserSetUp-x64的可执行文件&#xff0c;双击执行&#xff0c;选择要安装的路径&#xff0c;下一步。 2、go语言安装 官网链接&#x…

后端程序员入门react笔记(五)ajax请求

常见的ajax Ajax 最原始的方式&#xff0c;基于原生的js XmlHttpRequest 多个请求之间如果有先后关系&#xff0c;会存在很多层回调的问题&#xff0c;也是基于原生js Jquery Ajax 基于原生XHR封装&#xff0c;依赖Jquery框架&#xff0c;由jquery 框架去封装原生的XML(Xml)封…

git commit 后,本地远端都没有记录,消失不见

今天git commit 之后发现远端没有记录&#xff0c;本地没有最新代码记录 git commit 后&#xff0c;提交记录会消失不见的原因可能是&#xff1a; git只git commit了&#xff0c;没有push到远程分支&#xff0c;切换到其他分支时丢失。而且看不到提交记录&#xff0c;和找不到…

命令执行 [UUCTF 2022 新生赛]ez_rce

打开题目 得到题目源码 居然都不输入参数&#xff0c;可恶!!!!!!!!!<?php ## 放弃把&#xff0c;小伙子&#xff0c;你真的不会RCE,何必在此纠结呢&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#…

2024首更,Smartbi产品功能更新,用户体验更丝滑

Smartbi用户可以在官网下载Smartbi V11最新版本&#xff08;https://www.smartbi.com.cn/download&#xff09;&#xff08;PC端下载&#xff09;更新后可以使用相关功能&#xff0c;也可以在思迈特官网体验中心体验相关功能。 交互仪表盘 ▍指标拆解树组件支持从右到左展开指标…

应用回归分析:弹性网络回归

弹性网络回归&#xff1a;原理、优势与应用 弹性网络回归&#xff08;Elastic Net Regression&#xff09;是一种广泛使用的线性回归方法&#xff0c;它结合了岭回归&#xff08;Ridge Regression&#xff09;和套索回归&#xff08;Lasso Regression&#xff09;的特点。通过…