【Python基础入门系列】第07天:Python 数据结构--序列

python内置序列类型最常见的是列表,元组和字符串。(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式。)

另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体,不能像前者通过位置索引来访问数据。python序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从0开始,以此类推...... 

本文着重介绍python的序列及其实际应用,巩固python语法基础

 

 

一、序列概念

 

数据结构:以某种方式组合起来的数据元素的集合。

序列:以编号方式组合起来的数据元素的集合。

 

二、序列特点以及通用操作

  1. 索引:通过[n]获取第n号元素值。n>0索引方向从左向右(0开始),n<0索引方向从右向左(-1开始)。函数调用返回的是序列时,可以直接对其进行索引。

  2. 切片:用[a:b:c]访问 [a,b) 范围内的元素。a,b,c均可正可负可空。a:起始位,b:结束位,c:步长。 

  3. 相加:只可拼接同类型的序列。

  4. 相乘:重复序列x次。

  5. 检查:使用in运算符判断序列中是否有某成员。返回布尔值(True|False)

  6. 通用内置函数:len返回序列内元素的个数,min和max分别返回序列内元素的最大值和最小值

     

 

 

三、python内置序列1——list

列表定义

形如:[a,b,c,d],数据元素可以是另一个序列,元素可修改。

 

列表构建

list()可以将其它序列转换为列表。

 

列表基本操作

  1. 修改元素:直接选中赋值 ls[1]='e'

  2. 删除元素:del语句 del ls[1]

  3. 批量修改元素:使用切片赋值增删改原有数据元素 ls[1:1]='ello'

     

列表常用方法

  1. append:列表末尾添加一个对象(可以是一个列表)

  2. clear:只清空,不删除列表

  3. copy:与ls1=ls2不同,ls2=ls1.copy()后修改ls2不影响ls1

  4. count:计算元素出现次数

  5. extend:列表末尾添加多个值

  6. index:查找某元素在列表中出现第一次的索引值

  7. insert:列表某个位置添加一个对象 ls.insert(2,'a')

  8. pop:删除一个元素并返回该元素,默认为删除末尾元素 

    后进先出:ls.append(ls.pop())

    先进先出:ls.append(ls.pop(0)) | ls.insert(0,ls.pop())

  9. remove:删除列表中第一次出现的指定元素

  10. reverse:相反排序,反转。

    reversed(ls)函数返回一个迭代器,list(reversed(ls))可以转换为列表

  11. sort:排序sort(key,reverse) key:用于排序的函数,reverse:True(降序) | False(升序)。sorted(ls,key,reverse),sorted返回列表

     

     

四、python内置序列2——tuple

元组定义

形如:(a,b,c,d),元素不可修改。

元组构建

单值:1, | (1)

多值:1,2,3 | (1,2,3)

tuple()将其它序列转换为元组

元组作用

python很多内置函数和方法返回元组,可作为映射中的键。

五、python内置序列3——字符串

字符串定义

形如:‘abcd’,元素不可修改。

字符串构建

join()方法可以合并序列为字符串,sep.join(seq):seq各元素间由sep相接,合并为一个字符串

字符串常用方法

  1. count:统计

  2. find:查找某字符串是否存在,不存在返回-1

  3. replace:参数:(替换的字符,替换的内容,替换的次数)

  4. strip:去除左右空格,lstrip/rstrip去左空格/去右空格

  5. 分割:split(字符,次数)返回列表。partition(),只分割第一次出现的位置,分割内容本身也在元组内单独为一个元素,返回元组

  6. 大小写:capitalize()第一个字符大写,title()字符串每个单词首字母大写,lower()/upper()全小写/全大写

  7. 判断:startwith/endwith:判断开头结尾字符。isalpha/isalnum/isdigit/isspace:判断字符串全为字母/字母+数字/全为数字/全为空

 

使用序列示例概览:

 

#定义一个学生序列
>>> stuinfo=['liuwang','xuezhang','zuishuai',18,20]

列表相加:

 

#定义学生姓名和学生年龄,然后再定义一个属于自己的数据库将两个列表加入

>>> stuname=['liuwang','xuezhang','zuishuai']
>>> stuage=[18,20,16]
>>> database=[stuname,stuage]
>>> database
[['liuwang','xuezhang','zuishuai'], [18, 20, 16]]

通用序列操作索引使用:

 

序列中所有元素都有编号,这些编号是从0开始,依次递增,访问这些元素通过下标即可访问,而这个编号就是索引,例如:

>>> database
[['liuwang','xuezhang','zuishuai'], [18, 20, 16]]>>> database[0]
['liuwang', '学长', 'zuishuai']
>>> database[1]
[18, 20, 16]



#字符串序列的索引

>>> str='hello'
>>> str[0]
'h'
>>> str[1]
'e'

 

注意两种索引方式:刚刚我们使用的是0开始的正向索引,

当使用负数索引时,Python会从右边到左进行所有,-1是从序列的最后一个元素开始,如下:

 

 
#从最后一个元素开始
>>> str[-1]
'o'
#从倒数第二个元素开始
>>> str[-2]
'l'

 

2.切片

 

同样的和索引类似,切片是通过冒号操作来访问一定范围内的元素,例如:

 


# 构建一个序列tag,里面包含一个元素
>>> tag=['https://www.wakemeupnow.cn']# 拿到这个元素后通过分片取出一个范围的值(示例域名是我的博客嘿嘿)
>>> tag[0][8:]
'www.wakemeupnow.cn'

由上所知,切片操作的的实现需要提供两个索引作为边界,是一个左闭右开的区间。

除了上述方案,也可以通过显示方式进行操作:

2.1 切片快捷操作


>>> num[0:3]
# 取到前面3个数据
[1, 2, 3]

2.2 分片步长操作

 

分片操作可以给元素设置步长,在开始和结束的时候指定相应步长获取元素,例如:

 


# 按照步长为2返回第1个和第6个之间的元素
>>> num[0:6:2]
[1, 3, 5]

 

另外需要注意的是负数步长是从元素尾部到前遍历整个序列,所以负数的分片开始索引一定要大于结束索引

>>> num[7:-1]
[8, 9]

当开始索引和结束索引是负数时开始所以必须小于结束索引:

 


>>> num[-9:-1]
[2, 3, 4, 5, 6, 7, 8, 9]

对于一个正数步长,Python会从序列的头部开始向右提取元素,直达最后一个元素,而对于负数步长,则是从序列的尾部开始向左提取元素,直达提取到第一个,例如:

# 提取前6个元素,步长为2
>>> num[:6:2]
[1, 3, 5]
# 提取从后往前的8个元素,步长为2
>>> num[:2:-2]
[10, 8, 6, 4]

3.序列相加

 

序列相加通过加号“+”进行序列和序列之间的连接操作:

>>> 'hello'+' 学长!'
'hello 学长!'>>> [1,2,3]+['liuwang','学长']
[1, 2, 3, 'liuwang', '学长']

 

注意:只有相同类型的序列才能进行连接操作。

 

4.序列相乘

 

一个数字x乘以一个序列会产生一个新的序列,原来的序列会被重置成x次

>>> ['hello'+' world !']*3
['hello world !', 'hello world !', 'hello world !']

5.成员资格

 

检查一个元素是否在一个序列中使用运算符in进行检查, in运算符返回检查某个条件的布尔值,若为真返回true,否则返回false,例如:

>>> str='hello'
>>> 'h' in str
True>>> 'x' in str
False

6.序列长度、最大值和最小值

 

序列长度、最大值和最小值使用内建函数len、max、min进行检测,len返回序列中所包含的元素数量,max和min分别返回序列中最大值和最小值的元素

>>> len([11,34,23])
3
>>> max(11,34,23)
34
>>> min(11,34,23)
11

总结

本节给大家介绍了 Python  数据结构之序列的使用,对 Python 工程师使用提供了支撑,可以在项目中实际应用中取出相应元素,今天的知识别不是很难,但是需要牢牢地巩固。

 

 

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

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

相关文章

springBoot(20):使用Spring Session实现集群-redis

一、session集群的解决方案1.1、扩展指定server利用Servlet容器提供的插件功能&#xff0c;自定义HttpSession的创建和管理策略&#xff0c;并通过配置的方式替换掉默认的策略。缺点&#xff1a;耦合Tomcat/Jetty等Servlet容器&#xff0c;不能随意更换容器。1.2、利用Filter利…

docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

写在前面这篇博客适合谁&#xff1f;对于Docker并不了解&#xff0c;只是有一点模糊的感觉&#xff0c;觉得Docker可以当成虚拟机用之类的只是下载了Docker软件&#xff0c;对于怎么配置&#xff0c;怎么玩&#xff0c;第一步干什么&#xff0c;完全一无所知其二&#xff0c;我…

【Python基础入门系列】第08天:Python List

Python内置的一种数据类型是列表&#xff1a;list。list是一种有序的集合&#xff0c;可以随时添加和删除其中的元素。 LIST 列表 比如&#xff0c;列出班里所有同学的名字&#xff0c;就可以用一个list表示&#xff1a; >>> classmates [liuwang, xuezhang, al…

【Python基础入门系列】第09天:Python tuple

Python 中的数据结构是通过某种方式组织在一起的数据元素的集合&#xff0c;这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中&#xff0c;最基本的数据结构是序列&#xff08;在前面文章我们也说过序列&#xff09;&#xff0c;序列中的每个元素都有一个序…

elementui table某一列是否显示_Vue项目引进ElementUI组件的方法

环境要求NodejsNodejs官网下载地址&#xff1a;http://nodejs.cn/download/具体安装参考其他资料打开cmd命令行&#xff0c;输入npm -v&#xff0c;如果出现如下图的显示&#xff0c;说明已经安装正确。如果安装版本比较老&#xff0c;想升级新版本npm install npm -g安装 webp…

集成电路版图与工艺课程设计之用CMOS实现Y=AB+C电路与版图

1 绪论 1.1 设计背景 集成电路设计&#xff08;Integrated circuit design, IC design&#xff09;&#xff0c;亦可称之为超大规模集成电路设计&#xff08;VLSI design&#xff09;&#xff0c;是指以集成电路、超大规模集成电路为目标的设计流程。集成电路设计涉及对电子器…

硬盘显示容量和实际容量不符合_买移动固态硬盘纠结大半天?花2分钟看完这篇,购买时不再被坑...

如今移动硬盘已成为很多办公用户标配的物品&#xff0c;纵观整个移动硬盘市场&#xff0c;主要有移动机械硬盘和移动固态硬盘两种类型&#xff0c;前者容量大&#xff0c;价格较亲民&#xff1b;而后者具备了轻薄、读写速度快、耐振动不怕摔等优点。不少追求高效率的用户&#…

【Python基础入门系列】第10天:Python 类与对象

首先&#xff0c;我已经假定你是个萌新或已经看了无数遍的垃圾文章&#xff0c;然后依然搞不懂类和对象&#xff0c;但是呢起码知道有类和对象这么两个玩意儿&#xff0c;我觉得有必要找一篇生动形象的示例来讲解。 由于你可能没有编程经验&#xff0c; 所以无法从学过的编程…

数字电子技术课程设计之基于触发器的三位二进制同步减法计数器无效态000/110

基于触发器的三位二进制同步减法计数器无效态000/110 1 课程设计的目的与作用 掌握用multisim 的电路仿真程序 熟悉同步计数器工作原理和逻辑功能 熟悉计数器电路的分析和设计方法 掌握161 芯片集联成任意进制同步加法计数器 2 设计任务 三位二进制减法计数器&#xff08;无…

【Python的黑魔法】实例方法、静态方法和类方法

class Bird:# classmethod修饰的方法是类方法classmethoddef fly (cls):print(类方法fly: ,cls)# staticmethod修饰的方法是静态方法# staticmethoddef info (p):print(静态方法info: , p)if __name__ __main__:# 调用类方法&#xff0c;Bird类会自动绑定到第一个参数Bird.fl…

基于dreamweaver软件设计和开发一网站_基于 abp vNext 和 .NET Core 开发博客项目 Blazor 实战系列(一)...

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

LINUX 内存使用情况

# free 显示结果如下&#xff1a; Mem&#xff1a;表示物理内存统计 total 内存总数 8057964KBused 已使用的内存 7852484KBfree 空闲的内存数 205480KBshared 当前已经废弃不用&#xff0c;总是0buffers Buffer 缓存内存数: 290432KBcached Page 缓存内存数:5735024KB(存在关…

vagrant系列教程(四):vagrant搭建redis与redis的监控程序redis-stat(转)

阅读目录 下载redis解压redis编译安装redis配置redisredis开机自启动系统参数的调整上一篇php7环境的搭建 真是火爆&#xff0c;仅仅两天时间&#xff0c;就破了我之前swagger系列的一片文章&#xff0c;看来&#xff0c;大家对搭建环境真是情有独钟。 为了访问量&#xff0c;我…

【技术分享】Ubuntu下使用微信教程

做后端开发的同学用的Linux&#xff08;ubuntu&#xff09;,肯定会因为没有适配微信版本会感觉不太舒服&#xff0c;很多时候因为缺少一些办公通讯软件而感到不便。现在已经有很方便的Wine WeChat方案&#xff0c;但是微信在Wine上配置还有许多bug&#xff0c;今天在github上看…

python join函数_Python join()函数

原博文 2016-08-12 10:16 − 今天写python 100例时&#xff0c;有个题目是大致是这样的&#xff1a;已知输入形式是1321&#xff0c;要求输出形式为1123 一开始思路是将输入的字符串用split()函数划分成数组&#xff0c;在对数组进行排序&#xff0c;再用for循环输出 代码附上&…

CSS中的盒子

盒子 盒子模型解释元素在页面中显示成一个方块&#xff0c;类似一个盒子&#xff0c;CSS盒子模型就是使用现实中盒子来做比喻&#xff0c;帮助我们设置元素对应的样式。盒子模型示意图如下&#xff1a; 把元素叫做盒子&#xff0c;设置对应的样式分别为&#xff1a;盒子的边框…

Djang重新整理migrations,解决:Django Table xxx already exist

在开发过程中&#xff0c;由于需求变更或者自我重构&#xff0c;需要清理migrations&#xff0c;以保持代码整洁和后续的可维护性。 场景一 不考虑数据库数据表&#xff0c;可以完全清空数据库里面的表的数据。 步骤&#xff1a; 删除所有migrations find . -path "/migr…

安全随笔2:对称加密应用场景

MD5或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文&#xff0c;那么就需要对称和非对称这两类可逆算法。 首先&#xff0c;简单介绍下这两类算法。图9-1是对称算法的示意图&#xff1a; 图9-1 对称算法 在对称算法中&#xff0c;首先需要发送方和接收方协定一个密钥…

python安装多久_python安装与使用

1、进入官网下载python软件 python-3.4.4.amd64.msi http://www.python.org/download/ 这个软件包含三个环境&#xff0c;如下图&#xff1a;2、双击安装软件 3、设置环境变量path";C:\Python34"; 4、验证是否安装成功 进入cmd中&#xff0c;输入python,如果出现如下…

CSS中的块元素,内联元素,内联块元素

块元素,内联元素,内联块元素 元素就是标签&#xff0c;布局中常用的有三种标签&#xff0c;块元素、内联元素、内联块元素&#xff0c;了解这三种元素的特性&#xff0c;才能熟练的进行页面布局。 块元素块元素&#xff0c;也可以称为行元素&#xff0c;布局中常用的标签如&…