补充:如果if后面的条件语句不是布尔值,就将表达式的结果转换成布尔再看是否为True
一、列表基础
# 需求:定义变量保存6个学生的成绩
# 方法1:-不使用列表
# 方法2:-使用列表
scores = [90, 87, 92, 67, 55, 69, 81, 99]
# 计算平均分
print(sum(scores)/len(scores))
# 计算最高分
print(max(scores))
-
认识列表(list)
1)列表是容器型数据类型(序列);将[]作为容器的标志,里面多个数据(元素)用逗号隔开:[数据1,数据2,…]
2)可变性:列表是可变的(可变指的是列表中元素的个数和元素的值可变–说明列表支持增删改)
有序性:列表是有序的(有序是指元素有顺序对应的位置的信息;元素的顺序影响结果–支持下标(索引)操作)
3)列表对元素的要求:没有要求,任何类型的数据都可以作为列表的元素
# 使用推荐:同时处理多个数据时,考虑列表
#注:元素--容器中每个独立的数据,就是这个容器的元素
# 1)空列表
list1 = []
print(list1)
# 2)列表是有序的
print([10, 20, 30] == [30, 10, 20])# False
# 集合中的元素是无序的
print({10, 20, 30} == {30, 10, 20})# True
# 3)列表元素可以是任何类型的数据
# a.列表中元素可以是多个相同类型的数据
list2 = [10, 20, 30]
names = ['小赞', '小啵', '小爷']
# b.列表中元素可以是多个不同类型的数据
list3 = [10, '小毅', True, None]
# c.列表中的元素也可以是列表
list4 = [10, 11, [12, 13]]
二、列表查操作
-
查单个 - 获取一个元素
1)语法:
列表[索引]2)说明:
列表 - 需要获取元素的列表对象(可以是保存一个列表的变量,也可以是具体的列数据(eg,[10, 20, 30][]))
[] - 固定写法
索引 - 又叫下标;指的是元素在列表中的位置【不能越界】
列表一旦确定,列表中的每个元素对应的索引就确定
a.元素从前往后索引从0开始不断增加
b.元素从后往前索引从-1开始不断减少# 查-获取列表中元素的值 nums = [10, 20, 30, 40] print(nums[1]) print([10, 20, 30, 40][1]) print(nums[-1]) print(nums[3]) # print(nums[4]) #报错,索引不能越界 # print(nums[-6])
-
切片 - 同时获取多个元素(列表切片的结果是列表)
1)完整语法:
列表[开始下标:结束下标:步长]
a.说明
列表 - 需要获取元素列表
[] - 固定写法
开始下标、结束下标、步长 - 必须是整数
开始下标 - 决定从哪儿开始取
结束下标 - 决定取到哪儿结束
步长 - 决定取的时候怎么取(一个一个按顺序取,还是跳着取;是从前往后(步长为正)还是从后往前取(步长为负))
2)使用切片
a.确定切片结果
第一步:先确定结果是否为空,看开始下标对应的位置到结束下标对应的位置的方向和步长的方向是否一致
一致结果不为空,不一致结果一定为空。
第二步:如果结果不为空,再确定切片的有效范围:开始下标对应的元素能取到,结束下标对应的元素取不到。
第三步:在有效范围内容,按照步长的方向和绝对值获取元素。
方向:步长为正,从开始下标到结束下标从前往后取;步长为负就从后往前取
绝对值:绝对值为1,就一个一个取;绝对值为2,取一个跳一个在取一个;绝对值为3,取一个跳两个再取一个;…b.怎么写切片代码获取指定元素
第一步:确定开始下标–需要的结果中,第一个数据在列表中的下标
第二步:确定结束下标–结束下标是结果中最后一项的后一个数据或者前一个数据的下标(看方向)
第三步:确定步长–正负看趋势(从前往后取还是从后往前取);再看绝对值(是一个一个取的,还是跳着取的)movies = ['无名', '黑暗骑士', '心灵奇旅', '疯狂动物城', '寻梦环游记', '热烈', '满足', '庆余年','陈情令','有翡'] print(movies[1:3:1]) print(movies[0:-2:2]) print(movies[5:0:2])#[]方向不一致为空 print(movies[3:-1:-1])#[] print(movies[-2:2:-2])#['陈情令','满足', '寻梦环游记'] print(movies[6:2:-3])#[ '满足','疯狂动物城'] print(movies[1:-3:3])#['黑暗骑士', '寻梦环游记'] print('---------------------------------------------------------') print(movies[1:-1:1])#['黑暗骑士', '心灵奇旅', '疯狂动物城', '寻梦环游记', '热烈', '满足', '庆余年','陈情令'] print(movies[-1:1:-2])#['有翡','庆余年','热烈','疯狂动物城']错误 print(movies[-2:5:2])#[]错误 print(movies[0:-2:4])#['无名','寻梦环游记'] print(movies[5:-1:2])#[ '热烈','庆余年'] print(movies[6:-6:-1])#['满足', '热烈'] print('---------------------------------------------------------------')
3)切片省略的写法
完整的切片语法:列表[开始下标:结束下标:步长]
a.省略步长 - 相当于步长为1
列表[开始下标:结束下标]
b.省略开始下标 - 获取元素的时候从头开始取【步长为正,从第一个元素开始;步长为负,从最后一个元素开始取】
列表[:结束下标:步长]
c.省略结束下标 - 获取元素时,从开始下标开始,取完为止【一直取到最后,取到最后一个或者第一个】[能取到最后一个]
列表[开始下标::步长]# movies = ['无名', '黑暗骑士', '心灵奇旅', '疯狂动物城', '寻梦环游记', '热烈', '满足', '庆余年','陈情令','有翡'] # 省略步长 print(movies[1:4]) # ['黑暗骑士', '心灵奇旅', '疯狂动物城'] print(movies[-1:1]) #[] # 省略开始下标 print(movies[:-2:2]) #['无名','心灵奇旅','寻梦环游记','满足'] print(movies[:2:-2]) #['有翡','庆余年','热烈','疯狂动物城'] print(movies[:4])#['无名', '黑暗骑士', '心灵奇旅', '疯狂动物城'] # 省略结束下标 print(movies[2::2])#['心灵奇旅','寻梦环游记', '满足','陈情令'] print(movies[4::-1])#['寻梦环游记','疯狂动物城','心灵奇旅','黑暗骑士','无名'] print(movies[3:])#['疯狂动物城', '寻梦环游记', '热烈', '满足', '庆余年','陈情令','有翡'] print(movies[::-2])
-
遍历 - 将列表中所有的元素一个一个的获取出来
方法1:
for 变量 in 列表:
循环体(变量依次获取到的就是列表中的每个元素)方法2:
通过获取所有元素的下标来获取元素
for 变量 in range(len(列表)):
循环体(列表[变量])方法3:
for 变量1,变量2 in enumerate(列表):
循环体(变量1依次获取的是每个元素的下标;变量2依次获取的是每个元素)
# 注:len(列表) - 列表长度
scores = [90, 89, 87, 79, 93, 67, 56, 43, 99]
# 方法1
for i in scores:
print(i)
# 求总分
sum1 = 0
for i in scores:
sum1 += i
print(sum1)
# 统计90分以上的学生的人数
count = 0
for i in scores:
if i > 90:
count +=1
print('90分以上的学生的人数:',count)
print('-------------------------------------------------------')
list1 = [[10,20], [100,200], [1,2]]
for i in list1:
print('x:',i[-1])
print('--------------------------------------------------------')
for i in range(len(scores)):
print(i,scores[i])
print('--------------------------------------------------------')
for index, item in enumerate(scores):
print('index:',index,'item:',item)