Python 数据结构--序列

序列概览

  • Python 中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode 字符串、buffer 对象和 xrange 对象。
  • 列表和元组的主要区别是列表可以修改,而元组不能,如果要根据要求来添加元素,这时候列表适用性会更好,但是当序列不能修改的时候,使用元组则更合适,使用元组与 Python 的运作方式相关。
  • 在 Python 中几乎所有的情况下列表都可以替代元组,但是特殊情况不能(当使用元组作为字典的不可修改的键时,此时键不能修改,所以不能使用列表)

例如:

#定义一个学生序列
>>> stuinfo=[‘zhangsan‘,‘lisi‘,‘wangwu‘,18,20]

同时序列中还可以包含序列,例如数据库:database

#定义学生姓名和学生年龄,然后再定义一个属于自己的数据库将两个列表加入
>>> stuname=[‘zhangsan‘,‘lisi‘,‘wangwu‘]
>>> stuage=[18,20,16]
>>> database=[stuname,stuage]
>>> database
[[‘zhangsan‘, ‘lisi‘, ‘wangwu‘], [18, 20, 16]]

==注意:== Python 还有一种名为容器(container)的数据结构,容器可以包含其他任意对象,容器主要包括序列和映射(例如:字典)两类。序列的每个元素都有自己的编号,而映射每个元素则有一个叫做“键”的名字。集合是另一种容器(在后面章节会作详细讲解)。

通用序列操作

Python 中所有序列类型都可以进行一些特定的操作,这些操作包括:索引、分片、相加、相乘以及检查某个元素是否属于序列的成员–>成员资格检测 除此之外,Python 还有计算序列长度,找出最大和最小元素的内建函数。

1.索引

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

>>> database[0]
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘]
>>> 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.cnblogs.com/yangyuqig/p/10101663.html‘]

# 拿到这个元素后通过分片取出一个范围的值
>>> tag[0][0:24]
‘https://www.cnblogs.com/‘

由上所知,分片操作的的实现需要提供两个索引作为边界,是一个左闭右开的区间,也就是第 1 个索引包含在分片内,而第2个索引不包含在这个分片内,例如:

>>> num=[1,2,3,4,5,6,7,8,9,10]
# 表示从第四个到最后一个元素
>>> num[3:10]
[4, 5, 6, 7, 8, 9, 10]

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

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‘+‘ world !‘
  ‘hello world !‘

>>> [1,2,3]+[‘zhangsan‘,‘lisi‘,‘wangwu‘]
[1, 2, 3, ‘zhangsan‘, ‘lisi‘, ‘wangwu‘]

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

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

原文地址:https://www.cnblogs.com/wanghui0412/p/12143481.html

时间: 2024-11-09 02:47:18

Python 数据结构--序列的相关文章

python数据结构-序列之字典

字典是python中唯一内建的映射类型.(映射是通过名字引用值的数据结构). 字典中的值没有特殊顺序,但是都存储在一个特定的键(key)中.键可以是数字.字符串.元组. 一.创建字典: 1.创建字典: 如: phonebook={'zhangsan':'233333','lisi':'322233','wangwu':'4323334'} 字典由多个键及其对应的值构成的对组(也把键/值对 称为项).在phonebook示例中,名字是键,电话号码是值.键和值之间用冒号(:)隔开,项之间用逗号(,)

python数据结构-序列之元组

python中包含六种内建的序列:列表:元组:字符串:unicode字符串:buffer对象:xrange对象. 一.元组:不可变序列 元组与列表一样,也是一种序列.唯一不同是元组不能修改(元组和列表在技术实现上有一些不同,但是在实际使用时,可能不会注意到.且元组没有像列表一样的方法). 1.创建元组:用逗号(,)分开,元组(大部分时候)是通过圆括号括起来的 >>> 1,2,3            //直接在python编辑器输入(1, 2, 3)>>> >&g

python数据结构-序列之字符串

python中包含六种内建的序列:列表:元组:字符串:unicode字符串:buffer对象:xrange对象. 一.字符串: 所有标准的序列操作(索引.分片.乘法.加.成员资格.迭代.求最大最小值等)对字符串同样使用.需要注意的一点是字符串都是不可变的. 1.基本操作 >>> a="iloveu">>> a[0]        //索引'i'>>> b="uloveme">>> a+b    

python基本数据结构序列

python基本数据结构序列 ,六种内建序列类型:列表 元组字符串  Unicode字符串  buff对象和xrange对象 序列通用操作: 索引:元素的编号是从 0开始的 到索引号为负数时 查找方式是从右到左的 索引写在[]中 分片:类似索引的操作可以指定范围,当为一个对象创造副本时可以用 b = a[:] 这样的形式创建,这样 当 a被操作时不会影响 b  因为他们指向的不是同一块区域 相加:表示连接操作,列表连接后是新的列表不能改变列表原有的结构,序列相加时候要同种类型  进行,否则会报

python 数据类型 序列——列表

python 数据类型 序列--列表 **列表** list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表是可变类型的数据. 用[]表示列表,包含了多个以逗号分割开的数字或者字符串. >>> list1 = ['1','chen','陈'] >>> list2 = [1,2,3,4] >>> list3 = ["str1","str1","22"] >>

Python数据结构——散列表

散列表的实现常常叫做散列(hashing).散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的.需要元素间任何排序信息的操作将不会得到有效的支持. 散列表是普通数组概念的推广.如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术. 当实际存储的关键字比可能的关键字总数较小时,采用散列表就比较直接寻址更为有效.在散列表中,不是直接把关键字用作数组下标,而是根据关键字计算出下标,这种 关键字与下标之间的映射就叫做散列函数. 1.散列函数

Python数据结构与算法--数据类型

从数据类型开始 Python支持面向对象的编程范式,这意味着Python把数据看成解决问题的关键. 在Python中,类似其他的面向对象的编程语言, 我们定义一个类,用来描述数据是什么 (状态) 和数据能做些什么 (行为). 类和抽象数据类型相似,因为一个类的用户只看数据项的状态和行为. 数据项在面向对象编程中被称为对象. 对象是类的实例. 本文地址:http://www.cnblogs.com/archimedes/p/python-datastruct-algorithm-basedatat

Python的序列1–序列的简介

Python的序列1–序列的简介 1.序列的简介 序列是Python中的重要组成部分,也是一种数据结构,那么什么是序列呢?按照定义来说,序列就是一个对象里面的所有元素全部按照一定的顺序进行排列,并且可以通过下标索引,访问到该对象的一个或者几个元素. 那么序列又包括什么呢?在Python中序列值包括三种:字符串,列表,元组.请注意,数值型的对象是不属于序列的,我们说到序列就是单只这三种.也要注意的是:我们说序列并不是单只列表,而应该是包括列表在内的,符合定义中的两条原则:1,顺序排列:2,通过下标

python数据结构之 列表和元组

python数据结构之 列表和元组 序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始).典型的序列包括列表.字符串和元组.其中,列表是可变的(可以进行修改),而元组和字符串是不可变的(一旦创建了就是固定的).序列中包含6种内建的序列,包括列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 列表的声明: mylist = [] 2.列表的操作: (1) 序列的分片: 用法:mylist[startIndex:endIndex:step] exam: myli