day5 summa
1.增 - 添加元素
1)列表.append(元素) - 在列表的最后添加指定元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
print(tvs)
tvs.append('生活大爆炸')
print(tvs) #['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988', '生活大爆炸']
#练习:用一个列表保存100以内所有能被3整除数
nums = []
for x in range(0, 100, 3):
nums.append(x)
print(nums)
2)列表.insert(下标, 元素) - 在列表的指定下标所在的位置前插入指定元素.
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs.insert(1, '人民的名义')
print(tvs) #['回家的诱惑', '人民的名义', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答
# ,练习:已经一个列表scores按分数从高到低保存了一个班学生的分数,请输入一个新的分数,将新的分数插入到scores中,并且保证插入后不影响
# scores是从大到小排序的。
num = 97
scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
for index in range(len(scores)):
if scores[index] < num:
scores.insert(index, num)
break
else:
scores.append(num)
print(scores)
"""
num = 97
scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
index -> range(11)
index = 0: if scores[0] < 97 -> if 98 < 97
index = 1: if scores[1] < 97 -> if 93 < 97 -> scores.insert(1, 97) -> scores = [98, 97,93, 91, 87, 83, 80, 77, 70, 65, 62, 56] ->break
循环结束
print(scores) -> [98, 97,93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
"""
- 删 - 删除列表中的元素
tvs = [‘回家的诱惑’, ‘非自然死亡’, ‘我的兄弟叫顺溜’, ‘琅琊榜’, ‘甄嬛传’, ‘亮剑’, ‘请回答1988’]
- del 列表[下标] - 删除列表中指定下标对应的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
del tvs[1]
print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
del tvs[-1]
print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
注意:下标不能越界
del tvs[6] # IndexError: list assignment index out of range
2)列表.remove(元素) - 删除列表中指定元素
如果需要删除的元素在列表中有多个,只删最前面那一个
如果需要删除的元素不存在,程序会报错
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988', '琅琊榜']
tvs.remove('非自然死亡')
print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988', '琅琊榜']
tvs.remove('琅琊榜')
print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988', '琅琊榜']
tvs.remove('吸血鬼日记') # ValueError: list.remove(x): x not in list
练习:删除tvs中最后一个'琅琊榜'
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988', '琅琊榜']
for index in range(-1, -len(tvs) - 1, -1):
if tvs[index] == '琅琊榜':
del tvs[index]
break
print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988']
列表.pop() - 取出列表最后一个元素, 并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素, 并且返回
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
res1 = tvs.pop()
print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
res2 = tvs.pop(1)
print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
print(res1, res2)
# 3. 改: 列表[下标] = 新值 - 修改列表中指定下标对应的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs[0] = '行尸走肉'
print(tvs)
# 练习:删除scores中所有小于60分的成绩
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
# [87, 78, 99, 76, 89]
# 坑一 - 删不干净
for s in scores:
# print(s)
if s < 60:
scores.remove(s)
print(scores) # [87, 50, 78, 99, 23, 76, 89]
"""
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
s = 87: if 87 < 60 -> if False
s = 34: if 34 < 60 -> if True -> scores.remove(34) -> scores = [87, 50, 23, 78, 99, 45, 23, 76, 89, 30]
s = 23: if 23 < 60 -> if True -> scores.remove(23) -> scores = [87, 50, 78, 99, 45, 23, 76, 89, 30]
s = 99: if 99 < 60
s = 45: if 45 < 60 -> scores.remove(45) -> scores = [87, 50, 78, 99, 23, 76, 89, 30]
s = 76: if 76 < 60
s = 89: if 89 < 60
s = 30: if 30 < 60 -> scores.remove(s) -> scores = [87, 50, 78, 99, 23, 76, 89]
print(scores)
"""
# 解决坑一:
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
# 在删除之前对原列表中的数据进行备份,遍历备份数据,删除原数据
temp = scores[:] # scores[:] - 创建一个新的列表,新列表中的元素和scores一模一样
for s in temp:
if s < 60:
scores.remove(s)
print(scores)
# 坑二
# scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
# for index in range(len(scores)):
# print(index)
# if scores[index] < 60:
# del scores[index]
# print(scores)
"""
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
index -> range(11) -> 0 ~ 10
index = 0: if scores[0] < 60 -> if 87 < 60
index = 1: if scores[1] < 60 -> if 34 < 60 -> del scores[1] -> scores = [87, 50, 23, 78, 99, 45, 23, 76, 89, 30]
index = 2: if scores[2] < 60 -> if 23 < 60 -> del scores[2] -> scores = [87, 50, 78, 99, 45, 23, 76, 89, 30]
index = 3: if scores[3] < 60 -> if 99 < 60
index = 4: if scores[4] < 60 -> if 45 < 60 -> del scores[4] -> scores = [87, 50, 78, 99, 23, 76, 89, 30]
index = 5: if scores[5] < 60 -> if 76 < 60
index = 6: if scores[6] < 60 -> if 89 < 60
index = 7: if scores[7] < 60 -> if 30 < 60 -> del scores[7] -> scores = [87, 50, 78, 99, 23, 76, 89]
index = 8: if scores[8] < 60 报错!下标越界
"""
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
index = 0
while True:
if scores[index] >= 60:
index += 1
else:
del scores[index]
if index >= len(scores):
break
print(scores)
"""
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
index = 0
1: if scores[0] >= 60 -> if 87 >= 60 -> index += 1 -> index = 1 -> if 1 >= 11
2: if scores[1] >= 60 -> if 34 >= 60 -> del scores[1] -> scores = [87, 50, 23, 78, 99, 45, 23, 76, 89, 30]
-> if 1 >= 10
3: if scores[1] >= 60 -> if 50>=60 -> del scores[1] -> scores = [87, 23, 78, 99, 45, 23, 76, 89, 30]
-> if 1 >= 9
4: if scores[1] >= 60 -> if 23 >=60 -> del scores[1] -> scores = [87, 78, 99, 45, 23, 76, 89, 30]
-> if 1 >= 8
5: if scores[1] >= 60 -> if 78 >= 60 -> index += 1 -> index = 2 -> if 2 >= 8
6: if scores[2] >= 60 -> if 99 >= 60 -> index += 1 -> index = 3 -> if 3 >= 8
7: if scores[3] >= 60 -> if 45 >= 60 -> del scores[3] -> scores = [87, 78, 99, 23, 76, 89, 30]
-> if 3 >= 7
8: if scores[3] >= 60 -> if 23 >= 60 -> del scores[3] -> scores = [87, 78, 99, 76, 89, 30]
-> if 3 >= 6
9: if scores[3] >= 60 -> if 76>=60 -> index += 1 -> index = 4 -> if 4 >= 6
10: if scores[4] >= 60 -> if 89 >= 60 -> index += 1 -> index = 5 -> if 5 >= 6
11: if scores[5] >= 60 -> if 30 >= 60 -> del scores[5] -> scores = [87, 78, 99, 76, 89]
-> if 5 >= 5 -> break -> 循环结束
print(scores)
"""
# 方法三
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
new_scores = []
for x in scores:
if x >= 60:
new_scores.append(x)
print(new_scores)
# 补充:如果直接用一个列表变量给另外一个变量赋值,赋的是原变量中数据的地址
# a = [10, 20, 30]
# b = a
# c = a[:]
# a.append(100)
# print(b) # [10, 20, 30, 100]
# print(c) # [10, 20, 30]