1.列表
1)容器型数据类型(序列)
变量从是否是容器分为:非容器型数据类型的变量和容器型数据类型的变量
非容器型数据类型的变量 - 一个盒子里面只有一个格子,所以同一时间只能保存一个数据。例如:int、float、bool、None
容器型数据类型的变量 - 一个盒子里面有多个格子,每个格子可以存储不一样的数据,所以同一时间就可以保存多个数据,例如:list、dict、tuple、set、str等
scores = [89,70,98,23,90,67,62,78,23,89]
print(sum(scores)) # 689
print(max(scores),min(scores)) # 98 23
2)什么是列表(list)
列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…]
列表是可变的(可变指的是元素的个数、值和顺序可变 - 支持增删改);列表有序(支持下标操作)
列表中元素:任何类型的数据都可以作为列表的元素。(没有要求)
元素 - 指的是容器中每一个独立的数据
#空列表
list1 = []
print(list1) #[]
#list2是一个列表,列表中只有一个元素
list2 = [88]
print(list2) #[88]
#同一个列表中的元素可以是不同类型数据
list4=[10,12.8,True,'abc',[100,200]]
print(list4) #[10, 12.8, True, 'abc', [100, 200]]
2.获取列表元素
1)获取单个元素
语法:
列表[下标] - 获取指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,例如:保存列表的变量或者具体的列表数据
[] - 固定写法
下标 - 下标(又叫索引)是有序序列中元素的位置信息。python中有序序列中元素的下标有两种:
第一种:从前往后从0开始依次增加
第二种:从后往前从-1开始依次减少
注意:下标不能越界
list1 = [10,20,30,40]
print(list1[0]) # 获取list1中下标是0的元素 -> 10
print(list1[8]) # 报错:IndexError: list index out of range
2)切片 - 获取部分元素
语法1:完整的语法
列表[开始下标:结束下标:步长]
1)确定是否可以获取到数据:从开始下标到结束下标的方向如果和步长对应的方向(步长为正表示从前往后,步长为负表示从后往前)一定可以获取到数据,否则结果就是空列表
2)确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到 -> [开始下标,结束下标)
3)确定切片结果:在有效范围内按照步长绝对值取数据;绝对值为1就一个一个的取,绝对值为2就跳一个取一个
语法2:省略步长
列表[开始下标:结束下标] - 步长为1
语法3:省略开始下标
列表[:结束下标:步长] / 列表[:结束下标]
如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个元素开始往前取
语法4:省略结束下标
列表[开始下标::步长] / 列表[开始下标:]
如果步长为正,从开始下标开始从前往后取,取完为止;如果步长为负,从开始下标开始从后往前取,取完为止
#开始下标到结束下标的方向如果和步长对应的方向一致,就可以取到数据
#开始下标到结束下标的方向如果和步长对应的方向不一致,一定取不到数据
练习:写切片获取指定内容
heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安琪拉', '瑶', '孙膑']
print(heroes[2:5:1])# ['张飞', '关羽', '刘备']
print(heroes[0:4:1])# ['李白', '李信', '张飞', '关羽']
print(heroes[-2:-5:-1])# ['瑶', '安琪拉', '刘备']
print(heroes[1:6:2])# ['李信', '关羽', '安琪拉']
print(heroes[-1:-4:-2])# ['孙膑', '安琪拉']
print((heroes[1::5]))# ['李信', '瑶']
3)遍历 - 一个一个的全部取出来
方法一 - 直接获取元素
for 变量 in 列表:
循环体
变量依次获取的就是列表中的每个元素
方法二 - 通过获取每个元素的下标来获取元素
for 变量 in range(列表长度):
循环体
变量依次获取的是列表中元素的下标
补充:len(列表) - 获取列表的长度
练习:scores保存所有学生的分数
1)统计不及格学生人数
2)计算学生平均分
scores = [90, 78, 54, 67, 88, 30, 59]
count = 0
for x in scores:
if x<60:
count+=1
print('不及格人数:',count) # 不及格人数: 3
total=0
for y in scores:
total+=y
print('平均分:',total/len(scores)) #平均分: 66.57142857142857
3.增删改
1)增 - 添加元素
1)列表.append(元素) - 将元素添加到列表的最后
2)列表.insert(下标,元素) - 将元素插入到指定下标前
#append示例
list1 = [10,20]
list1.append(100)
print(list1) #[10, 20, 100]
#insert示例
nums = [10,20,30,40]
print(nums) #[10, 20, 30, 40]
nums.insert(1,100)
print(nums) #[10, 100, 20, 30, 40]
2)删 - 删除元素
1)del 列表[下标] - 删除指定下标对应的元素
2)列表.remove(元素) - 删除指定元素
如果元素不存在会报错;如果元素有多个,只删最前面那一个
3)列表.pop() - 取出最后一个元素,并且返回
列表.pop(下标) - 取出指定下标对应的元素,并且返回
3)改
#列表[下标] = 值 - 将列表中指定下标对应的元素改成指定的值
练习:将列表中60分以下的改为0分
scores=[90,34,89,55,88]
for x in scores:
for index in range(len(scores)):
if scores[index]<60:
scores[index] = 0
print(scores) #[90, 0, 89, 0, 88]
4.in操作
#元素 in 列表 - 判断列表中是否存在指定的元素
#元素 not in 列表 - 判断列表中是否不存在指定的元素
print(10 in [10,20,30]) #True