1、序列
1.1、概念
- 序列是Python中最基本的一种数据结构。
- 序列的作用是用来保存一组有序的数据。
- 序列通过标记这些数据的位置来保持数据的有序性,位置标记即为
索引
或者下标
- 在一个序列中,索引是唯一的
- 第一个索引从0开始,第二个索引是1,以此类推
- 索引的最大值 = 序列的长度 - 1
*拓展:
数据结构是指数据在计算机内存中的存储方式。
1.2、序列的分类
-
可变序列
顾名思义,就是序列中的元素是可以改变的,元素改变后,序列对象不变
如:列表(list)、字典(dict) -
不可变序列
相对的,不可变序列则表示序列中的元素不能改变,否则,序列对象将发生改变。
意思就是说:如果不可变序列中的元素不可变动,除非是改变序列对象
如:字符串(str)、元组(tuple)
2、列表
2.1、概念
- 列表是Python中的一个对象
- 特点
- 列表中可以保存多个有序的数据
- 列表中可以存储对象
- 列表中的可以是多个不同类型的数据
- 列表是以一对方括号( [] )包裹多个数据的表现形式
- 多个数据之间使用逗号( , )隔开
2.2、列表的使用
2.2.1、 列表的创建
# 创建一个以[]包裹数据形式的对象,
# 方括号中没有值,则表示是个空的列表
lst = []
2.2.2、 访问列表
列表既然是序列的一个类型,那么自然是要遵循序列的规则,
想要访问列表,可以通过列表的索引来进行访问
# 创建一个含有多个元素的列表
lst = ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
# 我们可以通过索引来访问元素
item = lst[0]
print(item) # Jack
item = lst[1]
print(item) # Rose
*以上:可以发现,我们可以通过下标= n - 1 来访问第n个元素
当然:索引的最大值不能超出列表最大个数-1,因为在这个列表中不存在那样的索引
2.2.3、 负数索引
Python比较有趣的一个就是,索引可以为负数。一起来看看
lst = ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
print(lst[-1]) # Captain
print(lst[-2]) # Brock
print(lst[-5]) # Carleton
print(lst[-7]) # Jack
# print(lst[-8]) # print(lst[-8]) # IndexError: list index out of range
能发现,负数索引好像是从最后开始数的
也就是-1,是倒数第一个,-2是倒数第二个…
*注意:
负数索引也是不能超出列表长度的。因为不存在。
3、切片
*思考:
不知有没有人考虑过这个问题。
以上我们所将的,都是通过单个的索引来获取单个的元素。
我们有没有方法能够一次性获取列表中的多个值呢?
那就是切片
3.1、概念
切片是什么意思呢?
切片是指从现有列表中切割出一个子列表,可以包含多个数据项
语法:
列表名字[起始索引:结束索引:步长]
解释:
在指定的列表中,从指定起始索引开始,每指定步长个元素,把他提取出来,,直到到达指定结束索引前一个元素结束。然后把所有找到的元素放到一个新的列表中,返回
lst = ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
# 从索引1开始(Rose),到索引5结束(注意:不包括索引5--Brock,),步长为2(每两个元素取一个)
new_lst = lst[1:5:2]
print(new_lst) # ['Rose', 'Molly']
# 原列表不变
print(lst) # ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
3.2、特点
- 通过切片获取元素时,包括起始索引的数据,但不包括结束索引的数据
- 通过切片获取的元素,会组成一个新的列表返回,不会影响原列表
- 起始索引、结束索引、步长可以不写,默认就是从开头寻找,到结束,步长为1
- 步长不能为0,这样就是每隔0个元素找一个元素,无法执行这样的要求
- 步长可以为负数,就像索引可以为负数一样
*以上:
特点总结的代码演示放在一起了
切片取值:
lst = ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
# 从索引1开始(Rose),到索引5结束(注意:不包括索引5--Brock,),步长为2(每两个元素取一个)
new_lst = lst[1:5:2]
print(new_lst) # ['Rose', 'Molly']
# 原列表不变
print(lst) # ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain']
切片参数的默认值
# 为了不占文本内容,后面就直接打印
# 如果我的起始索引、结束索引、和步长都不写,那就用默认值
# 会发现,默认值不写,和 0:列表长度:1 拿到的结果是一样的
# 但是不要混淆:这里说的是开头,和到结束。
print(lst[::]) # ['Jack', 'Rose', 'Carleton', 'Molly', 'Ruth', 'Brock', 'Captain&