day7总结
1.review
列表
-
列表的作用 - 同时保存多个数据
-
认识列表(list)
""" 容器(序列):[数据1,数据2,数据3,...] 可变的(支持增删改);有序的(顺序影响结果,支持下标操作) 任何类型的数据都可以作为列表元素 """
# [] - 空列表
-
查
# 1)查单个 - 列表[下标] # 2)切片 - 列表[开始下标:结束下标:步长]、列表[开始下标:结束下标]、列表[:结束下标:步长] # 3)遍历
""" for 变量 in 列表: 循环体 for 变量 in range(len(列表)): 循环体 for 变量1,变量2 in enumerate(列表): 循环体 """
2.列表的增删改
2.1 增 - 增加元素
-
列表.append(元素) - 在指定列表的最后添加指定的元素(不会产生新的列表,而是直接在原列表增加)
# 案例:提取scores中所有不及格的分数 scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66] new_scores = [] for x in scores: if x < 60: new_scores.append(x) print(new_scores)
-
列表.insert(下标,元素) - 将指定元素插入到列表中指定下标对应的元素前
heroes = ['寒冰射手','小炮','维鲁斯','金克斯','小法','卡牌','蛇女'] print(heroes) heroes.insert(-1,'亚索') print(heroes)
2.2 删 - 删除元素
-
del 列表[下标] - 删除列表中指定下标对应元素
heroes = ['寒冰射手','小炮','维鲁斯','金克斯','小法','卡牌','蛇女'] print(heroes) del heroes[1] print(heroes)
-
列表.remove(元素) - 删除列表中的指定元素(如果元素不存在会报错;如果元素有多个,只删最前面那一个)
heroes = ['寒冰射手','小炮','维鲁斯','金克斯','小法','维鲁斯','卡牌','蛇女'] print(heroes) heroes.remove('小炮') print(heroes) # heroes.remove('塔姆') # print(heroes)
-
列表.pop() - 取出列表最后一个元素,
列表.pop(下标) - 取出列表指定下标对应的元素,并返回
heroes = ['寒冰射手','小炮','维鲁斯','金克斯','小法','维鲁斯','卡牌','蛇女'] print(heroes) a = heroes.pop() print(a,heroes) heroes.pop(0) print(heroes)
2.3 改 - 修改元素的值
-
列表[下标] = 新元素 - 将列表中指定下标对应的元素改成新元素
# 练习:将scores中所有低于60分的成绩修改成0分(使用改) scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66] for x in range(len(scores)): if scores[x] < 60: scores[x] = 0 print(scores)
3.列表相关的操作
3.1 列表加法运算
# 列表1 + 列表2 - 将两个列表合并成一个新的列表
A = [10,20,30]
B = [100,200]
C = A + B
print(C) # [10, 20, 30, 100, 200]
print(A + A) # [10, 20, 30, 10, 20, 30]
3.2 列表乘法运算
# 列表 * N、 N * 列表 - 将列表中的元素重复N次产生一个新的列表
C = A * 2
print(C) # [10, 20, 30, 10, 20, 30]
print(B * 3) # [100, 200, 100, 200, 100, 200]
print(['小明','小花'] * 3) # ['小明', '小花', '小明', '小花', '小明', '小花']
3.3 列表比较运算
-
比较是否相等: ==、!=
print([10,20,30] == [10,20,30]) # True print([10,20,30] == [10,30,20]) # False
-
比较大小:>、<、>=、<=
# 列表1 > 列表2 # 两个列表比较大小,比较的是第一对不相等的元素的大小(相同位置的元素是一对) print([10,20,30] > [1,100,200,300,400]) # True print([10,20,30] > [10,12,200,300,400]) # True
3.4 in 和 not in
# 元素 in 列表 - 判断列表中是否存在指定的元素
# 元素 not in 列表 - 判断列表中是否存在指定的元素
# 练习:已知列表A和B,打印A和B的公共元素
A = ['后羿','甄姬','鲁班7号','赵云']
B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
C = []
for x in A:
if x in B:
C.append(x)
print(C)
4.列表相关函数
4.1 sum(数字序列) - 求数字序列中所有元素的数值和
scores = [98,23,48,93,73,58,83]
result = sum(scores)
print(result)
4.2 max、min
# max(序列) - 求序列中的最大元素
# min(序列) - 求序列中的最小元素
scores = [98,23,48,93,73,58,83]
result = max(scores)
print(result) # 98
# 补充:求最大值的逻辑
# 假设第一个元素是最大值保存到变量中,然后依次取出的每个元素和保存的最大值的变量进行比较,如果后面取出来的值比最大值还要大,就更新最大值
scores = [50,90,23,48,93,73,58,83]
max1 = scores[0]
for x in scores[1:]:
if x > max1:
max1 = x # 更新最大值
print(max1)
4.3 sorted
# sorted(序列) - 将序列中元素按照从小到大的方式排序,创建一个新的列表。
scores = [50,90,23,48,93,73,58,83]
result = sorted(scores)
print(result) # [23, 48, 50, 58, 73, 83, 90, 93]
# soreted(序列,reverse=True) - 将序列中元素按照从大到小的方式排序,创建一个新的列表。
scores = [50,90,23,48,93,73,58,83]
result = sorted(scores,reverse=True)
print(result) # [93, 90, 83, 73, 58, 50, 48, 23]
4.4 len
# len(序列) - 统计序列元素的个数
print(len(scores)) # 8
print(len('abc123')) # 6
print(len(range(1,100,2))) # 50
4.5 list
# list(序列) - 将指定的序列转换成列表(任何序列都可以转换成列表)
result = list('abc123')
print(result) # ['a', 'b', 'c', '1', '2', '3']
5.列表相关方法
5.1 列表.clear() - 清空列表
nums = [12,23,5435,46]
print(nums)
nums.clear()
print(nums) # []
5.2 列表.count(元素) - 统计列表中指定元素的个数
nums = [12,23,5435,46]
print(nums.count(12)) # 1
print(nums.count(100)) # 0
5.3 列表.extend(序列) - 将序列中的元素全部添加到列表中
list1 = [10,20]
list1.extend([100,200])
print(list1)
list1.extend('abc')
print(list1) # [10, 20, 100, 200, 'a', 'b', 'c']
5.4 列表.index(元素) - 获取列表中指定元素对应的下标(返回的是从0开始的下标值)
nums = [12,23,5435,46]
print(nums.index(23)) # 1
5.5 列表。reverse() - 将列表倒叙
nums = [12,23,5435,46]
nums.reverse()
print(nums) # [46, 5435, 23, 12]
5.6 sort
# 列表.sort() - 将列表中的元素从小到大排序
# 列表。sort(reverse=True) - 将列表中的元素从大到小排序
nums = [12,23,5435,46]
result = nums.sort()
print(nums) # [12, 23, 46, 5435]
print(result) # None
# sorted(序列) - 将列表中的元素从小到大排序(不修改原序列中元素的顺序,而是创建一个新的列表)
nums = [12,23,5435,46]
result = sorted(nums)
print(nums) # [12, 23, 5435, 46]
print(result) # [12, 23, 46, 5435]
6.列表赋值问题
# 补充:python中的变量保存数据,保存的是数据在内存的地址(python中的变量全部都是指针变量)
6.1 拷贝和直接赋值
# 需求:已知一个列表,现在需要创建和原列表一模一样的新列表
nums =[10,20,30,40]
6.1.1 直接赋值
一个变量直接给另一个变量赋值,赋的是地址,赋值后两个变量指向的是同一块内存
nums2 = nums
print('nums:',nums)
print('nums2:',nums2)
6.1.2 拷贝
# 一个变量通过拷贝的方式给另一个变量赋值赋值的时候会先复制原来变量中的数据,创建一个新的数据,然后将新的数据对应的内存地址给新的变量
nums3 = nums*1
print('nums3:',nums3)
nums4 = nums + []
print('nums4:',nums4)
nums5 = nums[:]
print('nums5:',nums5)
nums6 = nums.copy()
print('nums6:',nums6)
7.列表式
7.1 列表推导式结构1
"""
1)语法:
[表达式 for 变量 in 序列]
2) 让变量去序列中取值,一个一个的取,取完为止,每取完一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素
"""
result = [10 for x in range(5)]
print(result) # [10, 10, 10, 10, 10]
# 案例1:获取nums中所有元素的个位数
nums = [102, 230 ,89 ,67]
result = [x % 10 for x in nums]
print(result) # [20, 40, 60, 68, 118]
7.2列表推导式结构2
"""
1)语法:
[表达式 for 变量 in 序列 if 条件语句]
2)让变量去序列中取值,一个一个的取,取完为止,每取完一个值就判定一次条件是否成立,如果成立就计算表达式值作为列表元素
"""
# 案例1:删除scores中所有不及格的分数
scores = [80, 99,29,39 ,68 ,78 ,45]