01认识列表
1.列表的作用 - 提示处理多个数据的时候,列表的存在可以让问题变得简单
2.认识列表(list)
-
列表是Python自带的类型,属于容器型数据类型(可以提示保存多个数据);将[]作为容器的标识,里面多个元素(容器中每个独立的数据)用逗号隔开:[数据1,数据2,数据3,…]
-
特点
a. 列表是可变的(可变指的是元素的个数和元素的值可变) - 支持增删改操作
b. 列表是有序的 - 支持下标(索引)操作
#有序序列顺序影响结果(字符串和列表有序)
print([10, 20, 30] == [20, 10, 30]) - False
print('abc' == 'bac') - False
#集合无序
print({
10, 20, 30} == {
20, 30, 10}) - True
- 元素
a. 任何类型的数据都可以作为列表的元素
b. 同一个列表可以放不同类型的数据
list4 = [10, 'abc', True, None, [1, 2], (10, 20), {
11, 22}, {
'a': 100}]
3.空列表
list1 = []
02 查 - 获取列表中的元素
1. 查单个 - 获取列表中的一个数据
- 语法:
列表[下标] - 获取列表中指定下标对应的函数
num = [50, 78, 99, 30]
print(num[0], num[-4]) # 50 50
-
说明:
列表 - 任何结果是列表的表达式(具体的一个列表,保存列表的遍历等)
[] - 固定写法
下标 - 即索引;指的是列表中的元素在列表中的位置信息
每个元素的下标值有两个: a. 从前往后,从0开始不断递增的下标值
b. 从后往前,从-1开始不断递减的下标值 -
注意: 下标不能越界
num = [50, 78, 99, 30]
print(num[4]) # 报错 IndexError: list index out of range
2. 切片 - 获取列表中的部分数据
1) 完整语法:
列表[开始下标:结束下标:步长]
a. 怎么确定一个切片结果:
第1步: 看切片的结果是否为[] -> 看从开始下标位置到结束下标对应的位置的方向和步长对应的方向是否一致;
步长为正: 表示从前往后取
步长为负: 表示从后往前取
第2步: 确定有效范围 -> 开始下标对应的元素能取到,结束下标对应的元素取不到 前闭后开 ;
第3步: 通过步长在有效范围内获取元素
步长为正,在有效范围内从前往后取;
步长为负,在有效范围内从后往前取;
步长绝对值:
绝对值为1就一个一个的取;
绝对值为2就取1个跳过1个再取1个再跳过1个;
绝对值为3就就取1个跳过2个再取1个再跳过2个;
names = ['西施', '孙尚香', '刘备', '马可波罗', '赵云', '孙膑', '后羿', '鲁班7号', '百里守约']
print(names[1:5:2]) # ['孙尚香', '马可波罗']
print(names[-1:5:1]) # []
print(names[2:7:-2]) # []
print(names[-2:-7:-2]) # ['鲁班7号', '孙膑', '马可波罗']
print(names[-1:0:-3]) # ['百里守约', '孙膑', '刘备']
print(names[-1:3:1]) # []
print(names[4:-2:2]) # ['赵云', '后羿']
print(names[-3:0:3]) # []
print(names[-2:0:-2]) # ['鲁班7号', '孙膑', '马可波罗', '孙尚香']
b. 根据目标数据写切片的代码
第1步: 确定开始下标 - 想要获取的所有元素中第一个元素的下标
第2步: 确定结束下标 - 想要获取的所有元素中最后一个元素前面(从后往前取)或者后面(从前往后取)那个元素的下标
第3步: 确定步长 - 通过获取元素的方向确定正负;
通过获取方式确定绝对值
names = ['西施', '孙尚香', '刘备', '马可波罗', '赵云', '孙膑', '后羿', '鲁班7号', '百里守约']
# ['孙尚香', '刘备', '马可波罗', '赵云', '孙膑', '后羿', '鲁班7号']
print(names[1:-1:1])
# ['百里守约', '鲁班7号', '后羿']
print(names[-1:-4:-1])
# ['刘备', '赵云', '后羿']
print(names[2:7:2])
# ['后羿', '刘备']
print(names[-3:1:-4])
2) 切片的省略语法
a. 省略步长
相当于步长是1
列表[开始下标:结束下标]
tvs = ['一人之下', '海贼王', '名侦探柯蓝', '甄嬛传', '越狱', '行尸走肉', '绝命毒师', '穹顶之下']
print(tvs[1:-1]) # ['海贼王', '名侦探柯蓝', '甄嬛传', '越狱', '行尸走肉', '绝命毒师']
print(tvs[-