列表
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开始依次减少
注意: 下标不能越界
- 从开始下标到结束下标的方向如果和步长对应的方向(步长为正表示从前往后,步长为负表示从后往前)
- 确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到
- 确定切片结果:在有效范围内按步长绝对值取数据;
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.删除 - 删除元素
- del 列表[下标] - 删除指定下标的元素
2) 列表.pop() - 取出最后一个元素,并且返回
列表.pop(下标) - 没有下标删除最后一个,并返回
- 列表.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)