元素的曾删改查练习

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]
"""
  1. 删 - 删除列表中的元素
    tvs = [‘回家的诱惑’, ‘非自然死亡’, ‘我的兄弟叫顺溜’, ‘琅琊榜’, ‘甄嬛传’, ‘亮剑’, ‘请回答1988’]
  1. 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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值