在数学里,序列也成为数列,是按照一定顺序排列的一列数,而在程序设计中,序列是一种常用的数据存储方式,几乎每一种程序设计语言都提供了类似的数据结构。例如,C语言或JAVA中的数组等。
在python中 序列是最基本的数据结构,它是一块用于存放多个值得连续内存空间。python中内置了5个常用的序列结构。分别是 列表,元组,字典,集合,字符串。
序列支持的几个通用操作
- 索引
- 切片
- 序列相加
- 乘法
- 检查某个元素是否是序列的成员
- 计算序列的长度,最大值,最小值
其中,字典和集合 不支持 索引,切片,相加和相乘(1.2.3.4);
4.1.1索引
序列中的每一个元素都有一个编号,也成为索引。这个索引是从0开始递增的。
version = ['春眠不觉晓','处处闻啼鸟','夜来风雨声','花落知多少']
print(version[-1])
print(version[0])
4.1.2切片
切片操作是访问序列中元素的另一种方法,它可以访问范围内的元素,通过切片操作可以生成一个新的序列。实现切片操作的语法格式如下:
sname[start:end:step]
sname:序列的名字
start:切片开始的位置,不指定,默认为0
end:切片结束的位置,不指定,默认为序列的长度
step:切片的步长,不指定,默认为1,当省略该步长时,最后一个冒号也可以省略。
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
print(version[1:4])
print(version[0:4:1])
4.1.3序列相加
在python 中,支持两种相同类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用+ 运算符实现
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
version1 = ['白日依山尽','黄河入海流','欲穷千里目','更上一层楼']
print(version+version1)
4.1.4 乘法
在python中,使用数字N乘以一个序列产生新的序列,新的序列内容为原来序列被重复N次的结果
version1 = ['白日依山尽','黄河入海流','欲穷千里目','更上一层楼']
print(version1*2)
4.1.5检查某个元素是否是序列的成员
在python中,可以使用in 关键字检查某个元素是否是序列的成员,即检查某个元素是否包含在某个序列中
语法:
value in sequence
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
mm= '处处闻啼鸟' in version
print(mm)
mm= '处处闻啼鸟' not in version
print(mm)
4.1.6计算序列的长度,最大值和最小值
len();max();min();
python 的几个内置函数
list():将序列转换为列表
str():将序列转换为字符串
sum():计算元素和
sorted():对元素进行排序
reversed():反向序列中的元素
enumerate()将序列组合为一个索引序列,多用在for循环中
4.2列表
4.2.1列表的创建和删除
1.使用赋值运算符直接创建列表
2.创建空列表
emptylist= []
3.创建数值列表
list()
4.删除列表:del listname
4.2.2 访问列表元素
4.2.3 遍历列表
1.直接使用for循环实现
for item in team:
print(item)
2.使用for循环和enumerate()函数实现
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
for index,item in enumerate(version):
print(item,index+1)
4.2.4添加,修改和删除列表元素
1添加
可以使用+ 运算符将两个列表连接
添加一个元素可以使用 append
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
vv="作者是谁?"
version.append(vv)
print(version)
添加一个列表可以使用extend
version = ["s春眠不觉晓","处处闻啼鸟","夜来风雨声","花落知多少"]
version1 = ['白日依山尽','黄河入海流','欲穷千里目','更上一层楼']
version.extend(version1)
print(version)
2修改元素
修改其中的元素,只需要通过索引获取该元素,然后重新赋值即可
3删除元素
根据索引 删除 del
根据元素值 删除 listname.remove
4.2.5 对列表进行统计和计算
1.获取制定元素出现的次数
listname.count(obj)
2.获取指定元素首次出现的下标
listname.index(obj)
3.统计数值列表的元素和
sum(listname[,start])
4.2.6 对列表进行排序
1.使用列表对象的sort()方法
listname.sort(key = None ,reverse = False)
listname:表示要进行排序的列表
key:表示制定从每个元素中提取一个用于比较的键
reverse:可选参数,True为降序,False为升序,默认为升序
2.使用内置的sorted函数实现
4.2.7列表推导式
1生成指定范围的数值列表
list = [expression for var in range]
2根据列表生成指定需求的列表
newlist = [Expression for var in list]
3从列表中选择符合条件的元素组成新的列表
newlist = [Expression for var in list if condition]
4.2.8 二维列表的使用
1.直接定义二维列表
2.使用嵌套的for循环创建
3.使用列表推导式创建
4.3元组
4.3.1元组的创建和删除
1.使用赋值运算符直接创建元组
verse1 =("白日依山尽",)
2.创建空元组
emptytuple = ()
3.创建数值元组
tuple(range(10,20,2))
4.删除元组
del
4.3.2 访问元组元素
同列表
4.3.3修改元组元素
元组是不可变序列,但是可以整个重新赋值,元组进行拼接时,不要忘记前一个元组最后一个元素后边的 ","
4.3.4元组推导式
同列表,只是将[]更改为()
4.3.5元组和列表的区别
元组和列表都属于序列,而且它们又都可以按照特定顺序存放一组元素,类型又不受限制
- 列表属于可变序列,它的元素可以随时更改或删除;元组属于不可变序列,其中额元素不可以更改,除非整体替换
- 列表可以使用append()、extend()、insert()、remove()和pop()等方法实现添加和修改列表元素,而元组没有这几个方法,所以不能向元组中添加和修改元素,
- 元组和列表都可以使用切片进行切片访问,但是列表可以修改但是元组不可以
- 元祖比列表的访问和处理速度快
- 列表不能作为字典的键,而元组可以