列表
1.列表
变量是否是容器分为:非容器数据型类型的变量,和容器数据类型的变量 非容器数据类型的变量 - 一个盒子里面只有一个格子,只能保存一个数据 容器型数据类型的变量 - 一个盒子里面有多个格子,每个格子可以存储不一样的数据,所以同个时间可以存储多个数据 列如:list、dict、tuple、set、str等
stu = [23,45,73,75,85,24,86,98,79,69,57,96,97] print(sum(stu)) print(max(stu)) print(len(stu)) print(min(stu))
2.什么是列表(list)
列表是容器型数据类型;将中括号[]作为标志,里面多个元素用逗号隔开:[1,2,3,4,5,6] 列表是可变的(可变的是指元素 的个数、之和顺序可变, - 支持增删改);列表有序(支持下标操作 列表对元素的要求:没有要求,任何类型的数据都可以作为元素。 元素 - 指的是容器中每个独立数据
# 空列表 list1 = [] # list2一个元素的列表 list2 = [23] #多个元素 list3 = [23,43,54,23]
2.获取列表元素
1.获取单个元素
语法: 列表[下标] - 获取指定元素 说明: - 任何的结果是列表的表达式,保存列表的变量或者具体的列表数据 下标 - 下标(索引)是有序序列中元素的位置信息。python中有序序列中元素的下标有两种 第一种:从前往后从0开始依次增加 第二种:从后往前从-1开始依次减少 注意: 下标不能越界 1) 从开始下标到结束下标的方向如果和步长对应的方向(步长为正表示从前往后,步长为负表示从后往前) 2) 确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到 3) 确定切片结果:在有效范围内按步长绝对值取数据;
IndexError: list index out of range 索引错误:列表索引超出范围
list1 = [23,3434,543,5345,25,2543,54] print(list1[0],list1[5],list1[-3],list1[-1])
2.切片 - 获取部分元素
语法1:完整语法 列表[开始下标:结束下标:步长] # 语法2:省略步长 列表[开始下标:结束下标] 语法3:省略开始下标 列表[:结束下标:步长] 、列表[:结束下标] 语法4:省略结束下标 列表[开始下标::步长] 、 列表[开始下标:]
开始下标到结束下标的方向如果步长对应的方向不一致,取不到数据 list1 = [23,3434,543,5345,25,2543,54] print(list1[5:-5:-1]) print(list1[1:5:1])
3.遍历 - 把元素一个一个取出来
方法1:直接获取元素 for 变量 in 列表: 循环体 变量依次获取的就是列表中的每个元素 方法2:通过获取每个元素下标来获取元素 for 变量 in range(列表长度): 循环体 变量以此获取的是元素中的下标 len(列表) - 获取列表的长度
# 1)统计不及格学生人数 count = 0 scores = [90, 78, 54, 67, 88, 30, 59] for i in scores: if i < 60: count += 1 print('不及格的人数为:',count) # # 2)计算学生平均分 print(f'平均分数为:{sum(scores)/ len(scores)}') # 练习2:已知列表nums,统计nums中整数的个数 nums = [90, 1.23, 'abc', 12, 0.12] count2 = 0 for i in nums: if int == type(i): count2 += 1 print('整数的个数有:',count2)
3.增删改
1.增 - 添加元素
1).列表.append(元素) - 将元素添加到最后 2).列表.insert(下标位置,元素) - 将元素插入到指定下标前
# 练习:scores保存多个学生的分数,提取所有分数中不及格的分数 scores = [90, 78, 65, 45, 55, 89, 30, 99] scores.insert(1,'dd') print(scores)
2.删除 - 删除元素
1) del 列表[下标] - 删除指定下标的元素 2) 列表.pop() - 取出最后一个元素,并且返回 列表.pop(下标) - 没有下标删除最后一个,并返回 3) 列表.remove(元素) - 删除指定元素 如果元素不存在会报错;如果元素有多个,只删除前面那一个
nums = [12, 23, 56, 78, 99, 99, 120] del nums[2] print(nums) print(nums.pop()) nums.remove(99) print(nums)
列表[下标] = 值 - 将列表中指定下标对应的元素改成指定的值
nums = [12, 23, 56, 78, 99, 99, 120] nums[0] = 7 print(nums) scores = [23,45,67,98,34,89] for i in range(len(scores)): if scores[i] < 60: scores[i] = 0 print(scores)
4.in
#元素 in 列表 - 判断列表中是否存在指定元素 # 元素 not in 列表 - 判断列表中是否不存在指定元素
scores = [23,45,67,98,34,89,56] x = len(scores) while x < 0: for i in scores: if i < 60: scores.remove(i) x -= 1 print(scores)