Python的序列结构及常用操作方法,学完这一篇你就彻底懂了

news2024/12/23 18:36:31

上一篇:Python流程控制语句之跳转语句

文章目录

  • 前言
  • 一、索引
  • 二、切片
  • 三、序列相加
  • 四、乘法
  • 五、检查某个元素是否是序列的成员
  • 六、计算序列的长度、最大值和最小值
  • 总结


前言

序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列,每个值(称为元素)都分配一个数字,称为索引通过该索引可以取出相应的值。例如,我们可以把一家酒店看作一个序列,那么酒店里的每个房间都可以看作是这个序列的元素。而房间号就相当于索引,可以通过房间号找到对应的房间。

在Python中,序列结构主要有列表元组集合字典字符串,对于这些序列结构有以下几个通用的操作。其中,集合和字典不支持索引、切片、相加和相乘操作


一、索引

序列中的每一个元素都有一个编号,也称为索引索引是从 0 开始递增的,即下标为 0 表示第一个元素,下标为 1 表示第二个元素,以此类推。如下图所示:

在这里插入图片描述

序列的索引也可以是负数,这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是 -1,倒数第二个元素的索引值为 -2,以此类推。如下图所示:

在这里插入图片描述

在这里插入图片描述 注意:在采用负数作为索引值时,是从 -1 开始的,而不是从 0 开始的,即最后一个元素的下标为 -1,这是为了防止与第一个元素重合。

通过索引可以访问序列中的任何元素。例如,定义一个包括 5 个元素的列表,要访问它的第 4 个元素和最后一个元素,可以使用下面的代码:

fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print(fruits[3])  # 输出第4个元素
print(fruits[-1])  # 输出最后一个元素

结果如下:

榴莲
草莓

在这里插入图片描述 说明:关于列表的详细介绍在后面博客会说到。

二、切片

切片是访问序列中元素的另一种方法,它可以访问指定范围内的元素,通过切片操作生成一个新的序列。实现切片操作的语法格式如下:

sname[start:end:step]

参数说明:

  • sname表示序列的名称
  • start表示切片的开始位置(包括该位置),如果不指定,则默认为 0。
  • end表示切片的截止位置(不包括该位置),如果不指定,则默认为序列的长度。
  • step表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

在这里插入图片描述 说明:在进行切片操作时,如果指定了步长,那么将按照该步长遍历序列的元素,否则将一个一个遍历序列。

例如,通过切片先获取【2022年中国大学排名】前十位中的第 3 个到第 6个元素,再获取第 2 个、第 4 个和第 6 个元素,可以使用下面的代码:

universities = ["1-清华大学", "2-北京大学", "3-浙江大学", "4-上海交通大学",
                "5-复旦大学", "6-南京大学", "7-中国科学技术大学", "8-华中科技大学",
                "9-武汉大学", "10-西安交通大学"]
print(universities[2:6])  # 获取第3个到第6个元素
print(universities[1:6:2])  # 获取第2个、第4个和第6个元素

运行代码结果如下:

['3-浙江大学', '4-上海交通大学', '5-复旦大学', '6-南京大学']
['2-北京大学', '4-上海交通大学', '6-南京大学']

三、序列相加

在Python中,支持两种相同类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用加(+)运算符实现。例如,将两个列表相加,可以使用下面的代码:

fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
vegetables = ["茄子", "土豆", "豆角"]
print(fruits+vegetables)

代码运行结果如下:

['苹果', '香蕉', '车厘子', '榴莲', '草莓', '茄子', '土豆', '豆角']

从上面的输出结果中可以看出,两个列表被合成一个列表了。

在这里插入图片描述 说明:在进行序列相加时,相同类型的序列是同为列表、元组、字符串等,至于序列中的元素类型可以不同。

例如下面代码也是正确的:

fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
num = [20, 13, 45, 78]
print(fruits+num)

相加后的结果如下:

['苹果', '香蕉', '车厘子', '榴莲', '草莓', 20, 13, 45, 78]

但是不能将列表和元组相加,也不能将列表和字符串相加。例如下面代码就是错误的:

a = "人生苦短,我用Python"
num = [20, 13, 45, 78]
print(a+num)

上面代码运行之后就会产生报错,如下图所示:

在这里插入图片描述

四、乘法

在Python中,使用数字 n 乘以一个序列会生成新的序列,新序列的内容为原来序列被重复 n 次的结果。例如下面的代码,将实现把一个序列乘以 3 生成一个新的序列并输出,从而达到 “重要的事情说三遍” 的效果。

love = ["爱你一万年"]
print(love * 3)

运行上面代码,结果显示如下内容:

['爱你一万年', '爱你一万年', '爱你一万年']

五、检查某个元素是否是序列的成员

在Python语言中,可以使用 in 关键字检查某个元素是否为序列的成员,即检查某个元素是否包含在某个序列中。语法格式如下:

value in sequence

其中,value 表示要检查的元素sequence 表示指定的序列。例如,要检查名称为 fruits 的序列中,是否包含元素 “榴莲”,可以使用下面的代码:

fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print("榴莲" in fruits)

运行上面的代码,将显示结果为 True,表示序列中存在指定的元素。

另外,在Python中,也可以使用 not in 关键字检查某个元素是否不包含在指定的序列中。例如下面的代码:

fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print("榴莲" not in fruits)

上述代码是判定 “榴莲” 没有在序列 fruits 中,但是 “榴莲” 是在的,所以运行之后结果为 False。如下图所示:

在这里插入图片描述

六、计算序列的长度、最大值和最小值

Python中提供了内置函数计算序列的长度、最大值和最小值。分别是:使用 len() 函数计算序列的长度,即返回序列包含多少个元素;使用 max() 函数返回序列中的最大元素使用 min() 函数返回序列中的最小元素

例如,定义一个包含 6 个元素的列表,并通过 len() 函数计算列表的长度,可以使用下面的代码:

num = [34, 2, 65, 31, 698, 17]
print("列表num的长度为", len(num))

代码运行之后结果如下:

列表num的长度为 6

就刚才的列表 num,我们使用 max() 函数和 min() 函数来分别计算列表中的最大元素和最小元素,代码如下:

num = [34, 2, 65, 31, 698, 17]
print("列表num中的最大元素为", max(num))
print("列表num中的最小元素为", min(num))

运行上面的代码,将显示以下结果:

列表num中的最大元素为 698
列表num中的最小元素为 2

总结

以上就是今天和大家分享的Python中序列类型的常用操作方法,在开发中使用频率最高的就是索引切片这两种方法,大家业余多注意练习。喜欢博主文章的都可以点赞+关注,哪些不理解的也可以在评论区留言哦。

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

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

相关文章

【论文阅读】Cleanits: A Data Cleaning System for Industrial Time Series

论文来源 标题: Cleanits (Xiaoou Ding,2019) 作者: Xiaoou Ding, Hongzhi Wang, Jiaxuan Su, Zijue Li, Jianzhong Li, Hong Gao 期刊: Proceedings of the VLDB Endowment 研究问题 工业时间序列数据清洗系统 1)缺失值插补,2)匹配不一致…

Maven可选依赖与排除依赖

可选依赖——指的是对外隐藏当前所依赖的资源(不透明) 可选依赖的作用:是隐藏所使用的依赖,用于控制当前依赖资源能否被别人发现 可选依赖的含义:当前工程所依赖的资源,不被其他项目所调用此依赖 pom文件…

DolphinScheduler 3.1.0 海豚集群运维使用问题记录

文章目录海豚常见问题1. 认证问题2. 时区问题3. jdk问题导致的认证问题4. 海豚调度sqoop任务问题(1. 海豚不允许脚本有空行出现(2. 脚本调脚本:权限不足(3. 直接执行某个表的sqoop同步任务:(4. sudo权限不足5. 海豚配置hive/impala数据源问题(1.海豚连接hive数据源配置(2. 配置…

[架构之路-97]:《软件架构设计:程序员向架构师转型必备》-7-需求分析与业务需求领域建模

前言:需求分析工程师工作中业务领域,而业务领域有很多业务领域专有的概念;程序员主要工作在计算机领域,他们没有足够的业务领域的知识识别业务领域的过于专业化的业务需求。为了确保业务需求能够被软件工程师正确无误地实现&#…

《MFC编程》:第一个MFC程序

《MFC编程》&#xff1a;第一个MFC程序《MFC编程》&#xff1a;第一个MFC程序设置开发环境如何把一个win32程序改成MFC程序&#xff1f;代码书写《MFC编程》&#xff1a;第一个MFC程序 设置开发环境 头文件为<afxwin.h>&#xff1b;在设置中勾选“使用MFC库”。 注&…

53.Isaac教程--ZED相机

ZED相机 ISAAC教程合集地址文章目录ZED相机Codelets支持的固件下载出厂校准文件通过本地校准提高相机精度为相机校准文件指定自定义位置Isaac SDK 支持 StereoLabs ZED 和 ZED Mini (ZED-M) 以及 ZED2 立体相机。 使用本节中的程序下载出厂校准文件或在相机上执行本地校准。 …

看涨期权与看跌期权

目录 1. 看涨期权多头 2. 看涨期权空头 3. 看跌期权多头 4. 看跌期权空头 买进期货合约者称为多头&#xff0c;卖出股指期货合约者称为空头。 1. 看涨期权多头 买入沪深 300 指数的看涨期权&#xff0c;行权价 2000 点&#xff0c;期限 1 个月期权费 100 点1 点 100 元初…

PMP和ACP哪个更有用?

PMP证书和ACP证书都是项目管理类的证书&#xff0c;但是方向不一样&#xff0c;ACP特别验证了从业者在项目工作中理解及实施敏捷管理原则与实践的能力&#xff0c;PMP则认证了从业者所表现出的领导和引导项目团队的能力。 PMP是传统的项目管理模式&#xff0c;适合各行各业&am…

日常小工具之:不花一分钱,不限制视频大小,用 python 和 ffmpeg 批量视频转格式,并保存到 iphone / ipad

应用背景 2008 年左右买的一个系列视频&#xff0c;全都是 .rmvb 的格式&#xff0c;想移到 iphone 里面&#xff0c;但是显示解码格式不支持上 知乎 看格式转换的工具发现这些工具需要把视频上传上去处理&#xff0c;而且很慢&#xff0c;而且有些还限制视频大小 我觉得有必要…

规则引擎-drools-3.4-drl文件构成-rule部分-结果部分Action

文章目录drl文件构成-rule部分结果部分 RHSsetinsert && insertLogicalmodify && updatedeletedrl文件构成-rule部分 drl文件构成&#xff0c;位于官网的第5章位置&#xff0c;也是drools作为规则引擎应用的最核心部分。 其中rule模块&#xff0c;包括属性&am…

Linux命令使用错误记录

问题描述 今天在使用jenkins自动部署的时候&#xff0c;查看日志也是打印成功的&#xff0c;如下图&#xff1a; 自以为是成功&#xff0c;没有看项目启动日志。当访问接口的时候&#xff0c;返回的还是原有数据&#xff0c;没有更新数据接口。 解决思路 首先&#xff0c;打…

春晚背后的“新技术”,腾讯技术助力央视频春晚“新看法”

伴随着《难忘今宵》音乐的响起&#xff0c;兔年春晚圆满落幕。今年&#xff0c;我们和中央广播电视总台一起打造了“竖屏春晚HDR及菁彩声”技术方案&#xff0c;并在“央视频”客户端上线。让你“听”得更沉浸&#xff0c;“看”得更清晰。三维菁彩声&#xff0c;观看春晚“如临…

【Flume】Flume原理简述及示例实践

文章目录1. Flume是什么2. Flume三大组件3. Flume高级应用场景3.1 多路复用3.2 整合4. 示例实践4.1 配置4.2 运行4.2.1 运行结果输出4.2.2 设置后台运行1. Flume是什么 Flume是一个高可用&#xff0c;高可靠&#xff0c;分布式的海量日志采集、聚合和传输的系统&#xff0c;能够…

低代码:让企业“活”起来,赋能企业数字转型

低代码作为一种无需或只需少量代码即可快速生成应用程序的开发方式&#xff0c;广义的低代码可以分为低代码和无代码两种&#xff0c;两者面向的群体和场景不同&#xff0c;分别定位于服务IT人员和业务人员。两者都可以降低开发成本和门槛&#xff0c;有助于业务人员和开发人员…

自动驾驶感知——红外传感器

文章目录1. 红外线基本概念1.1 红外线探测的优缺点1.2 红外线相关基础知识1.3 红外辐射的基本知识1.4 黑体、白体和透明体1.5 相关物理定律1.5.1 基尔霍夫定律1.5.2 斯特藩-玻耳兹曼定律1.5.3 维恩位移定律2. 红外线传感器分类2.1 主动式与被动式2.2 光子式红外传感器2.3 热释电…

Redis -- 过期删除策略和内存淘汰策略

1. 过期删除策略 1.1 redis支持三种过期删除策略&#xff1a; 定时删除&#xff1a;在设置键的过期时间的同时&#xff0c;创建一个定时器&#xff0c;让定时器在键的过期时间来临时&#xff0c;立即执行对键的删除操作惰性删除&#xff1a;放任键过期不管&#xff0c;但是每…

Day2 CF713 div3 vp A-G

Dashboard - Codeforces Round #713 (Div. 3) - Codeforces感觉中规中矩&#xff0c;rk4k确实是我现在的水平&#xff0c;一直徘徊在绿灰边缘23333&#xff0c;其实很大原因在于不补题&#xff0c;看了CF Analytics的题目rating&#xff0c;几乎只写1200-的题&#xff0c;1600的…

Qt中的网络编程(TCP)

在Qt中网络编程主要由Qt Network模块来编写基于TCP/Ip的网络程序&#xff0c;其中提供了许多的类&#xff1a; 可以点击该链接查看&#xff1a;Qt网络C类|Qt网络 5.15.12 常见的有&#xff1a; QTcpServer基于 TCP 的服务器QTcpSocketTCP 套接字QUdpSocketUDP 套接字QDtls此类…

End-to-End Entity Resolution for Big Data: A Survey Matching部分学习笔记

Matching ER的核心是匹配任务&#xff0c;它接收一个块集合作为输入&#xff0c;对于一个块中的每一对候选匹配&#xff0c;它决定它们是否指向相同的真实世界实体。 Preliminaries 匹配决策通常由匹配函数MMM做出&#xff0c;它将每一对实体描述(ei,ej)(e_{i}, e_{j})(ei​…

全网最详细的手把手模拟实现Cache

前言&#xff1a;本文内容较多&#xff08;字数1w&#xff09;&#xff0c;不仅包含理论知识&#xff0c;还进行了全面实践。本文对前三章理论内容粗略解释&#xff0c;建议去b站观看哈工大和王道考研的操作系统中虚拟存储相关章节&#xff0c;然后对于设计实现就游刃有余了。 …