Day-6列表
1、认识列表(list)
scores = [98 , 34 , 89 , 99 , 56 , 100 , 91 , 70]
print(‘平均分:’ , sum(scores) / len(scores))
print(‘最高分’ , max(scores))
01列表是python中的容器型数据类型;
将[ ]作为容器的标志,里面多个数据用逗号个隔开:[数据1,数据2,数据3,…];列表是可变的(元素的个数、元素的值和顺序 都可以改变 - 支持增、删、改);列表是有序的(支持下标操作)
补充:元素 - 容器中每个独立的数据就是这个数据中的每个元素
len(列表) - 获取列表中元素的个数
空列表 - list[ ]
证明空列表:print(type(list))或者,len(list)
任何类型的数据都可以是列表的元素;同一个列表中的元素的类型可以不相同
list2 = [100]
list3 = [98, 34, 89, 99, 56, 100, 91, 70]
list4 = [‘EZ’, ‘瑞文’, ‘亚索’, ‘劫’]
list5 = [‘小明’, 18, False, 78.9]
print(list5)
list6 = [10, [20, 30]]
print(len(list6))
2、查 - 获取元素
01查单个 - 获取列表中的一个元素
语法:
列表[下标] - 获取列表中指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,一般是保存列表的列表的变量或开始者具体某一个列表
[ ] - 固定写法
下标 - 下标又叫索引,下标就是列表中元素的位置信息;列表中的每个元素都有两个下标分别是:从前往后数从0开始不断增加的下标值、从后往前从-1开始不断减小的下标值
注意:这儿的下标不能越界
movies = [‘小森林’, ‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’, ‘泰坦尼克号’, ‘阿凡达’]
print(movies[2], movies[-5])
print(movies[-1])
print(movies[7]) IndexError: list index out of range
02遍历 - 一个一个的将列表中的元素全部取一遍
方法1:
for 元素 in 列表:
循环体
方法2 - 通过遍历下标来遍历列表
for 下标 in range(len(列表)):
循环体: 列表[下标]
方法3:
for 下标,元素 in enumerate(列表):
循环体
方法1
for x in movies:
print(‘x:’, x)
scores = [78, 19, 80, 92, 99, 45, 67, 87, 49]
案例1: 打印scores中所有不及格的分数
for x in scores:
if x < 60:
print(x)
案例2: 统计scores中及格的分数的个数
count = 0
for x in scores:
if x >= 60:
count += 1
print(‘及格人数:’, count)
方法二
movies = [‘小森林’, ‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’, ‘泰坦尼克号’, ‘阿凡达’]
0 1 2 3 4 5 6
-1 -2 -3 -4 -5- 6- 7
for x in range(len(movies)):
print(x, movies[x])
x = 0
while x < len(movies):
print(x, movies[x])
x += 1
-1 -2 -3 -4 -5 -6 -7
for x in range(-1, -len(movies)-1, -1):
print(x, movies[x])
6 5 4 3 2 1 0
for x in range(len(movies)-1, -1, -1):
print(x, movies[x])
方法3:
movies = [‘小森林’, ‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’, ‘泰坦尼克号’, ‘阿凡达’]
for a, b in enumerate(movies):
print(a, b)
03切片 - 获取部分元素
完整语法
列表[开始下标:结束下标:步长]
说明:开始下标,结束下标 - 用来确定切片的有效范围(开始下标对应的元素能取到,结束下标对应的元素娶不到)
步长 - 确定获取方式(正负决定是从前往后取还是从后往前取;绝对值大小决定是一个一个的取还是跳着取)
【通过切片来确定目标】第一步:先确定结束是否为空(看从开始下标到结束下标对应的方向和步长对应的方式是否一致,如哦不一致,结果直接为[ ];第二步:确定有效范围;第三步:根据步长在有效范围内获取元素(绝对值为1:一个一个的取;绝对值为2:取一个跳一个再取一个;绝对值为3:取一个跳两个再取一个)
movies = [‘小森林’, ‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’, ‘泰坦尼克号’, ‘阿凡达’]
print(movies[1:-2:1]) # [‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’]
print(movies[4:0:2]) # []
print(movies[-2:2:-2]) # [‘泰坦尼克号’, ‘蜘蛛侠’]
练习:
games = [‘英雄联盟’, ‘王者荣耀’, ‘开心消消乐’, ‘炉石传说’, ‘部落冲突’, ‘阴阳师’, ‘刀塔’, ‘原神’, ‘绝地求生’]
print(games[1:-3:-2])
print(games[-4:-1:-1])
print(games[-6:0:2])
print(games[-7:-2:3])
print(games[2:8:3])
print(games[-1:3:-2])
【通过目标来写切片】第一步:确定开始下标(将目标数据中第一个元素对应的下标作为开始标);第二步:确定步长(根据获取方向判断正负;根据取的时候跳过的方式确定绝对值);第三步:确定结束下标(如果步长为正,结束下标是取到的最后一个元素后面那个元素的下标;如果步长为负,结束下标是取到的最后一个元素前面那个元素的下标)
movies = [‘小森林’, ‘复联3’, ‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’, ‘泰坦尼克号’, ‘阿凡达’]
[‘肖生克的救赎’, ‘蜘蛛侠’, ‘忍者神龟’]
print(movies[2:-2:1])
[‘复联3’, ‘蜘蛛侠’, ‘泰坦尼克号’]
print(movies[1:-1:2])
[‘泰坦尼克号’, ‘蜘蛛侠’, ‘复联3’]
print(movies[-2:0:-2])
省略语法
省略步长:[开始下标,结束下标] - 相当于步长为1
省略开始下标:[:结束下标:步长] - 相当于从头开始(头有可能是第一个元素也有可能是最后一个元素
省略结束下标:[开始下标::步长] - 相当于从开始位置一直取完
games = [‘英雄联盟’, ‘王者荣耀’, ‘开心消消乐’, ‘炉石传说’, ‘部落冲突’, ‘阴阳师’, ‘刀塔’, ‘原神’, ‘绝地求生’]
print(games[2:-2]) # [‘开心消消乐’, ‘炉石传说’, ‘部落冲突’, ‘阴阳师’, ‘刀塔’]
print(games[:-2:3]) # [‘英雄联盟’, ‘炉石传说’, ‘刀塔’]
print(games[:-2:-1]) # [‘绝地求生’]
print(games[3::-1]) # [‘炉石传说’, ‘开心消消乐’, ‘王者荣耀’, ‘英雄联盟’]
print(games[3::2]) # [‘炉石传说’, ‘阴阳师’, ‘原神’]
print(games[:3]) # [‘英雄联盟’, ‘王者荣耀’, ‘开心消消乐’]
print(games[3:]) # [‘炉石传说’, ‘部落冲突’, ‘阴阳师’, ‘刀塔’, ‘原神’, ‘绝地求生’]
print(games[::-1]) # [‘绝地求生’, ‘原神’, ‘刀塔’, ‘阴阳师’, ‘部落冲突’, ‘炉石传说’, ‘开心消消乐’, ‘王者荣耀’, ‘英雄联盟’]
3、列表的增删改
增 – 添加元素
列表.append(元素) - 在指定列表的最后添加指定元素
list1 = [10, 20]
print(list1) [10, 20]
list1.append(100)
print(list1) [10, 20, 100]
案例:获取scores中所有不及格的分数,以列表的形式返回
scores = [98, 34, 89, 99, 56, 100, 91, 70]
[34, 56]
new_scores = []
for x in scores:
if x < 60:
new_scores.append(x)
print(new_scores) [34, 56]
列表.insert(下标,元素) - 将指定元素插入到源列表指定下表对应的元素前
nums = [10, 50, 100]
print(nums) # [10, 50, 100]
nums.insert(2, 60)
print(nums) # [10, 50, 60, 100]
删 – 删除元素
del 列表[下标] - 删除指定下标对应的元素
列表.remove(元素) - 删除指定元素(如果对应的元素有多个,只删最前面的那一个;如果元素不存在会报错)
列表.pop() - 取出列表最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素并且返回
nums = [10, 50, 100]
del nums[1]
print(nums) [10, 100]
nums = [10, 50, 100]
nums.remove(50)
print(nums) [10, 100]
nums = [10, 50, 100, 50, 20]
nums.remove(50)
print(nums) [10, 100, 50, 20]
nums = [10, 50, 100, 50, 20]
nums.remove(60) ValueError: list.remove(x): x not in list
nums = [10, 50, 100, 50, 20]
x = nums.pop()
print(nums, x) [10, 50, 100, 50] 20
nums = [10, 50, 100, 50, 20]
x = nums.pop(-2)
print(nums, x) [10, 50, 100, 20] 50
改 – 修改元素的值
列表[下标] = 值 - 将指定下标对应的元素修改成指定的值
nums = [10, 50, 100, 50, 20]
print(nums)
nums[0] = 10000
print(nums) [10000, 50, 100, 50, 20]