Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从 0 开始,以此类推…… 本文着重介绍 Python 的序列及其实际应用。
例如:
1 2 |
#定义一个学生序列 >>> stuinfo=['zhangsan','lisi','wangwu',18,20] |
同时序列中还可以包含序列,例如数据库:database
1 2 3 4 5 6 |
#定义学生姓名和学生年龄,然后再定义一个属于自己的数据库将两个列表加入 >>> stuname=['zhangsan','lisi','wangwu'] >>> stuage=[18,20,16] >>> database=[stuname,stuage] >>> database [['zhangsan', 'lisi', 'wangwu'], [18, 20, 16]] |
==注意:== Python 还有一种名为容器(container)的数据结构,容器可以包含其他任意对象,容器主要包括序列和映射(例如:字典)两类。序列的每个元素都有自己的编号,而映射每个元素则有一个叫做“键”的名字。集合是另一种容器(在后面章节会作详细讲解)。
Python 中所有序列类型都可以进行一些特定的操作,这些操作包括:索引、分片、相加、相乘以及检查某个元素是否属于序列的成员–>成员资格检测 除此之外,Python 还有计算序列长度,找出最大和最小元素的内建函数。
序列中所有元素都有编号,这些编号是从 0 开始,依次递增,访问这些元素通过下标即可访问,而这个编号就是索引,例如:
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> database[0] ['zhangsan', 'lisi', 'wangwu'] >>> database[1] [18, 20, 16] #字符串序列的索引 >>> str='hello' >>> str[0] 'h' >>> str[1] 'e' |
==注意:== 字符串就是一个由字符组成的序列,索引0指向第一个元素 以上这就是索引,所有序列中都可以通过元素编号的方式进行索引,当使用负数索引时,Python 会从右边到左进行所有,-1 是从序列的最后一个元素开始,如下:
1 2 3 4 5 6 |
#从最后一个元素开始 >>> str[-1] 'o' #从倒数第二个元素开始 >>> str[-2] 'l' |
同样的和索引类似,分片是通过冒号操作来访问一定范围内的元素,例如:
1 2 3 4 5 6 |
# 构建一个序列tag,里面包含一个元素 >>> tag=['https://www.cnblogs.com/yangyuqig/p/10101663.html'] # 拿到这个元素后通过分片取出一个范围的值 >>> tag[0][0:24] 'https://www.cnblogs.com/' |
由上所知,分片操作的的实现需要提供两个索引作为边界,是一个左闭右开的区间,也就是第 1 个索引包含在分片内,而第2个索引不包含在这个分片内,例如:
1 2 3 4 |
>>> num=[1,2,3,4,5,6,7,8,9,10] # 表示从第四个到最后一个元素 >>> num[3:10] [4, 5, 6, 7, 8, 9, 10] |
除了上述方案,也可以通过显示方式进行操作:
1 2 3 |
>>> num[0:3] # 取到前面3个数据 [1, 2, 3] |
分片操作可以给元素设置步长,在开始和结束的时候指定相应步长获取元素,例如:
1 2 3 |
# 按照步长为2返回第1个和第6个之间的元素 >>> num[0:6:2] [1, 3, 5] |
另外需要注意的是负数步长是从元素尾部到前遍历整个序列,所以负数的分片开始索引一定要大于结束索引
1 2 |
>>> num[7:-1] [8, 9] |
当开始索引和结束索引是负数时开始所以必须小于结束索引:
1 2 |
>>> num[-9:-1] [2, 3, 4, 5, 6, 7, 8, 9] |
对于一个正数步长,Python会从序列的头部开始向右提取元素,直达最后一个元素,而对于负数步长,则是从序列的尾部开始向左提取元素,直达提取到第一个,例如:
1 2 3 4 5 6 |
# 提取前6个元素,步长为2 >>> num[:6:2] [1, 3, 5] # 提取从后往前的8个元素,步长为2 >>> num[:2:-2] [10, 8, 6, 4] |
序列相加通过加号“+”进行序列和序列之间的连接操作:
1 2 3 4 5 |
>>> 'hello'+' world !' 'hello world !' >>> [1,2,3]+['zhangsan','lisi','wangwu'] [1, 2, 3, 'zhangsan', 'lisi', 'wangwu'] |
==注意:只有相同类型的序列才能进行连接操作==
一个数字 x 乘以一个序列会产生一个新的序列,原来的序列会被重置成x次
1 2 |
>>> ['hello'+' world !']*3 ['hello world !', 'hello world !', 'hello world !'] |
检查一个元素是否在一个序列中使用运算符 in 进行检查, in 运算符返回检查某个条件的布尔值,若为真返回 true,否则返回 false,例如:
1 2 3 4 5 6 |
>>> str='hello' >>> 'h' in str True >>> 'x' in str False |
序列长度、最大值和最小值使用内建函数 len、max、min 进行检测,len 返回序列中所包含的元素数量,max 和 min 分别返回序列中最大值和最小值的元素
1 2 3 4 5 6 |
>>> len([11,34,23]) 3 >>> max(11,34,23) 34 >>> min(11,34,23) 11 |
文中示例代码:python-100-days
本节给大家介绍了 Python 数据结构之序列的使用,对 Python 工程师使用提供了支撑,可以在项目中实际应用中取出相应元素。
from:http://www.ityouknow.com/python/2019/09/01/python-007.html