【Python基础入门系列】第07天:Python 数据结构--序列
python内置序列类型最常见的是列表,元组和字符串。(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式。)
另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体,不能像前者通过位置索引来访问数据。python序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从0开始,以此类推......
本文着重介绍python的序列及其实际应用,巩固python语法基础。
一、序列概念
数据结构:以某种方式组合起来的数据元素的集合。
序列:以编号方式组合起来的数据元素的集合。
二、序列特点以及通用操作
索引:通过[n]获取第n号元素值。n>0索引方向从左向右(0开始),n<0索引方向从右向左(-1开始)。函数调用返回的是序列时,可以直接对其进行索引。
切片:用[a:b:c]访问 [a,b) 范围内的元素。a,b,c均可正可负可空。a:起始位,b:结束位,c:步长。
相加:只可拼接同类型的序列。
相乘:重复序列x次。
检查:使用in运算符判断序列中是否有某成员。返回布尔值(True|False)
通用内置函数:len返回序列内元素的个数,min和max分别返回序列内元素的最大值和最小值
三、python内置序列1——list
列表定义
形如:[a,b,c,d],数据元素可以是另一个序列,元素可修改。
列表构建
list()可以将其它序列转换为列表。
列表基本操作
修改元素:直接选中赋值 ls[1]='e'
删除元素:del语句 del ls[1]
批量修改元素:使用切片赋值增删改原有数据元素 ls[1:1]='ello'
列表常用方法
append:列表末尾添加一个对象(可以是一个列表)
clear:只清空,不删除列表
copy:与ls1=ls2不同,ls2=ls1.copy()后修改ls2不影响ls1
count:计算元素出现次数
extend:列表末尾添加多个值
index:查找某元素在列表中出现第一次的索引值
insert:列表某个位置添加一个对象 ls.insert(2,'a')
pop:删除一个元素并返回该元素,默认为删除末尾元素
后进先出:ls.append(ls.pop())
先进先出:ls.append(ls.pop(0)) | ls.insert(0,ls.pop())
remove:删除列表中第一次出现的指定元素
reverse:相反排序,反转。
reversed(ls)函数返回一个迭代器,list(reversed(ls))可以转换为列表
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相接,合并为一个字符串
字符串常用方法
count:统计
find:查找某字符串是否存在,不存在返回-1
replace:参数:(替换的字符,替换的内容,替换的次数)
strip:去除左右空格,lstrip/rstrip去左空格/去右空格
分割:split(字符,次数)返回列表。partition(),只分割第一次出现的位置,分割内容本身也在元组内单独为一个元素,返回元组
大小写:capitalize()第一个字符大写,title()字符串每个单词首字母大写,lower()/upper()全小写/全大写
判断: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 工程师使用提供了支撑,可以在项目中实际应用中取出相应元素,今天的知识别不是很难,但是需要牢牢地巩固。
【Python基础入门系列】第07天:Python 数据结构--序列相关推荐
- 【Python基础入门系列】第01天:环境搭建
其实 Python 已经是一个很老的编程语言了,到现在(2019年) Python 已经高龄 28 岁,比很多程序员的年龄都大.现在之所以这么流行和社区.人工智能的发展,有很大的关系. 千里之行始于足 ...
- 【Python基础入门系列】第03天:Python 变量与数据类型
这篇文章我们学习 Python 变量与数据类型 Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可 ...
- Python基础入门篇【2】--python脚本结构
目录 文章目录 python脚本简单介绍 编写一个简单的python脚本 新建一个python脚本 python脚本的结构 python脚本的执行 python脚本的头部注释 什么是头注释? 头注释的 ...
- 【Python基础入门系列】第10天:Python 类与对象
首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...
- 【Python基础入门系列】第05天:Python函数
前面我们写过九九乘法表,但如果我要七七乘法表或五五乘法表的话,你会看到三者代码极其类似,只是循环变量不同,那么如何做到代码重用,而不是简单拷贝黏贴修改呢,其实可是使用函数完成这一功能! 先来试着看一看 ...
- 【Python基础入门系列】第04天:Python 流程控制
在编程的世界中,流程控制是程序员运行的基础,流程控制决定了程序按照什么样的方式去执行,本节给大家介绍 Python 流程控制相关语法. if 语句 if 语句表示如何发生什么样的条件,执行什么样的逻辑 ...
- 【Python基础入门系列】第02天:Python 基础语法
Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异.在本章中我们将来学习 Python 的基础语法,让你快速学会Python 编程. 开始你的第一个 Pyth ...
- 【Python基础入门系列】第09天:Python tuple
Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字.字符.甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(在前面文章我们也说过序列),序列 ...
- 【Python基础入门系列】第08天:Python List
Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. LIST 列表 比如,列出班里所有同学的名字,就可以用一个list表示: >> ...
最新文章
- Unity Remote使用方法
- 【SICP练习】111 练习3.24
- 我们学校的DV作品——《感悟青春》
- 阿里研究院潘永花:大数据将成为新的煤和石油
- 关于「Xception」和「DeepLab V3+」的那些事
- 想要导航提示页最新安卓区_最新微信小程序授权的详细处理思路(一)
- STM8L芯片启动时钟分频问题及发现(转)
- ActiveRecord教程
- 在windows上搭建redis集群(Redis-Sentinel)
- 【matlab】元胞数组(由元胞数组创建元胞数组)
- linux arm fpu初始化,ARM处理器的浮点运算单元(FPU)
- 配置国内免费registry mirror -daocloud、网易、阿里云和七牛
- 60个有趣的经济学定律!
- vs助手使用期过 编译CEGUI的问题:error C2061: 语法错误: 标识符“__RPC__out_xcount_part” VS2010...
- 请教下 atmega8l 下载程序 下载器progisp1.6.7
- C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态
- 风影ASP.NET基础教学 9 数据访问
- 【Python】SymPy库——求泰勒展开式+求极限 代码实现
- pandas绘图函数
- 精品微信小程ssm便捷记账本财务账单+后台管理系统|前后分离VUE
热门文章
- Hibernate4 注解方法说明
- 前端框架开始学习Vue(一)
- Django框架-Form组件
- 【GPS】GPS的C_GNSS_RF_ELNA_GPIO_NUM_DEFAULT配置,Linux系统中GPIO的设置
- Jzoj4348 打击目标
- HttpClient通过Post方式发送Json数据
- Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误
- 在程序开发中日志级别
- Linux inode与文件系统关系
- POJ 1323 Game Prediction#贪心