列表是python容器中比较重要的一类,其他的python容器还有字典、元组、集合等。但是和列表有相似的地方。所以列表的内容会分为上下两篇,知识点会多一些也更加细致,为后面的容器学习打下基础
一、什么是列表
1、列表的作用
如果需要同时处理多个数据的时候,就需要使用容器
# 案例:定义一个变量保存一个所有学生的成绩
score = [90,82,56,92,77,99,53,88,83,95]
print(sum(score)/len(score))
print(max(score))
2、什么是列表
列表是容器型数据类型(可以同时保存多个数据),将[]作为容器的标志,里面多个数据(元素)用逗号隔开:[数据1,数据2,数据3,…]
3、特点
列表是可变的(可变指的是元素的个数和值可变 → 列表支持增删改)
列表是有序的(顺序影响结果,支持下标)
print([10,20,30] == []10,20,30) # False
print([10,20,30] == []10,30,20) # True
4、列表的元素
任何类型的数据都可以作为列表的元素
l2 = [10, 'abc', 12.5, [10,20]]
5、空列表:l1 = [] → 不含任何元素的空表
二、列表的操作
1、查单个 → 获取列表中一个元素
(1)语法:
列表[下标] → 获取列表中指定下标对应的元素
(2)说明:
“列表”:可以是具体的列表值也可以是保存列表的变量
“[]”:固定写法
“下标”:又叫索引,他是元素在列表中的位置信息
列表一旦确定,列表中的每个元素都会对应两个固定下标,元素在列表中的位置
下标的确定方式:a.从前往后从0开始不断加1
b.从后往前从-1开始不断减1
注意:下标不能越界
name = [666,777,888,999,333,555]
print(name[1])
print(name[-1])
print(name[5])
'''
777
555
555
'''
三、列查操作
1、切片
(1)定义:一次获取列表中多个(部分)元素
(2)完整语法:列表[开始下标:结束下标:步长]
movies = ['逐梦演艺圈','上海堡垒','鲨卷风','无名之辈','十面埋伏','蜘蛛侠-纵横宇宙','消失的他']
print(movies[1:4:2]) # ['上海堡垒', '无名之辈']
print(movies[-1:2:1]) # []
print(movies[0:-2:-1]) # []
print(movies[-1:1:-2]) # ['消失的他', '十面埋伏', '鲨卷风']
(3)确定切片的结果
第一步:看切片结果是否为空(看从开始下标到结束下标的方法和步长是否一致,如果 不一致结果肯定为空列表)
第二步:确定有效范围(开始下标对应的元素能取到,结束下标对应的元素取不到)
第三步:在有效范围内按照步长来获取元素
步长的正负:步长为正在有效范围内从 前往后去,步长为负在有效范围内从后 往前取
步长的绝对值:绝对值为1,就一个一个的取;绝对值为2就取一个跳过一个再 取一个…绝对值为3就取一个跳过两个取一个…
(4)切片的代码
确定开始下标的值:需要获取的结果中第一个元素对应的下标
确定结束下标的值:需要获取的结果中的最后一个元素的后面那个元素或者前面那个元 素的下标(看获取方向)
确定步长:确定方向(从前往后取步长为正,否则为负)和绝对值(一个一个取绝对值为 1;取1个跳过1个再取一个…绝对值为3就取一个跳过两个取一个…
# 练习
movies = ['逐梦演艺圈', '上海堡垒', '鲨卷风', '无名之辈', '十面埋伏', '蜘蛛侠-纵横宇宙', '消失的他']
# ['逐梦演艺圈', '上海堡垒', '鲨卷风']
print(movies[0:3:1])
# [ '鲨卷风', '无名之辈']
print(movies[2:-3:1])
# ['上海堡垒', '消失的他']
print(movies[1:7:5])
# ['十面埋伏', '无名之辈', '鲨卷风']
print(movies[-3:1:-1])
# ['上海堡垒', '鲨卷风', '无名之辈', '十面埋伏', '蜘蛛侠-纵横宇宙']
print(movies[1:-1:1])
# ['蜘蛛侠-纵横宇宙', '十面埋伏', '无名之辈', '鲨卷风']
print(movies[-2:1:-1])
# ['上海堡垒', '十面埋伏']
print(movies[1:-2:3])
# ['消失的他', '十面埋伏', '鲨卷风']
print(movies[-1:1:-2])
(5)缩略写法 → 列表[开始下标:结束下标:步长]
A.省略步长 → 步长就是1 → 列表[开始下标:结束下标:]
B.省略开始下标 → 从头开始取(头可能是第一个元素,也可能是最后一个元素,由步 长的正负决定)
→ 列表[:结束下标:步长]
C.省略结束下标 → 有效范围是从头开始一直到最后一个元素或者第一个元素(由步长 的正负决定)
→ 列表[开始下标::步长]
movies = ['逐梦演艺圈', '上海堡垒', '鲨卷风', '无名之辈', '十面埋伏', '蜘蛛侠-纵横宇宙', '消失的他']
print(movies[2:-2])
print(movies[-1:1])
print(movies[:3:1]) # ['逐梦演艺圈', '上海堡垒', '鲨卷风']
print(movies[:3:-2]) # ['消失的他', '十面埋伏']
print(movies[:-2]) # ['逐梦演艺圈', '上海堡垒', '鲨卷风', '无名之辈', '十面埋伏']
print(movies[2::2]) # ['鲨卷风', '十面埋伏', '消失的他']
print(movies[3::-1]) # ['无名之辈', '鲨卷风', '上海堡垒', '逐梦演艺圈']
print(movies[-3:]) # ['十面埋伏', '蜘蛛侠-纵横宇宙', '消失的他']
print(movies[::-2]) # ['消失的他', '十面埋伏', '鲨卷风', '逐梦演艺圈']
四、遍历列表 -- 将列表中的元素一个一个的取出来
方法1: 直接获取元素
for 变量 in 列表:
循环体(变量依次取到的就是列表中的每个元素)
tvs = ['亮剑', '甄嬛传', '如懿传', '爱情公寓', '知否', '康熙王朝', '三国演义', '流星花园', '武林外传']
for x in tvs:
print(x)
方法2:先获取每个元素的下标值,然后再根据下标获取元素
for 变量 in range(len(列表)):
循环体(变量依次取到的是每个元素的下标值)
for index in range(len(tvs)):
print(index, tvs[index])
方法3:同时获取每个元素和元素对应的下标
for 变量1, 变量2 in enumerate(列表):
循环体(变量1依次取到的是每个元素的下标,变量2依次取到的时候每个元素)
for index, item in enumerate(tvs):
print(index, item)