总结
1. 列表元素的增删改
-
增 - 添加元素
- 列表.append(元素) - 在列表的最后添加指定元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988'] tvs.append('生活大爆炸') print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988', '生活大爆炸']
练习: 用一个列表保存100以内所有能被3整除的数
nums = [] for x in range(0, 100, 3): nums.append(x) print(nums) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
- 列表.insert(下标, 元素) - 在列表的指定下标所在的位置前插入指定元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988'] tvs.insert(1, '人民的名义') print(tvs) # ['回家的诱惑', '人民的名义', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988']
练习: 一个列表scores按分数从高到低保存了一个班学生的分数,请输入一个新的分数,将新的分数插入到scores中,并且保证插入后不影响
num = 89 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) # [98, 93, 91, 89, 87, 83, 80, 77, 70, 65, 62, 56]
-
删 - 删除列表中的元素
-
del 列表[下标] - 删除列表中指定下标对应的元素
注意: 下标不能越界
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988'] del tvs[1] print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '亮剑', '请回答1988'] del tvs[-1] print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '亮剑']
-
列表.remove - 删除指定元素
如果需要删除的元素在列表中有多个,只删最前面的那一个
如果需要删除的元素不存在,程序会报错
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988','琅琊榜'] tvs.remove('非自然死亡') print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988', '琅琊榜'] tvs.remove('琅琊榜') print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '甄嬛传', '亮剑', '请回答1988', '琅琊榜']
-
列表.pop() - 取出列表最后一个元素, 并且返回 (取出,后面元素还需要就用pop)
列表.pop(下标) - 取出列表中指定下标对应的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] res1 = tvs.pop() print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑'] res2 = tvs.pop(1) print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑'] print(res1, res2) # 请回答1988 非自然死亡
-
-
改: 列表[下标] = 新值 - 修改列表中指定下标对应的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988','琅琊榜'] tvs[0] = '行尸走肉' print(tvs) # ['行尸走肉', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988', '琅琊榜']
练习: 删除scores中所有小于60分的成绩
# 方法一 scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30] temp = scores[:] # scores[:] - 创建一个新的列表, 新列表的元素和scores一模一样 for x in temp: # 遍历备份列表,删除的原列表里面的元素 if x < 60: scores.remove(x) print(scores) # [87, 78, 99, 76, 89] # 方法二 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) # [87, 78, 99, 76, 89] # 方法三 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) # [87, 78, 99, 76, 89]
补充: 如果直接用一个列表变量给另外一个变量赋值,赋的是原变量中数据的地址
2. 列表相关操作
-
加法和乘法运算
- 列表1 + 列表2 - 将两个列表合并产生一个新的列表
list1 = [10, 20, 30,] + ['abc', 123] print(list1) # [10, 20, 30, 'abc', 123]
- 列表 * N - 列表中的元素重复N次产生一个新的列表
list2 = [10, 20, 30] * 3 print(list2) # [10, 20, 30, 10, 20, 30, 10, 20, 30]
-
in 和 not in
- 元素 in 列表 - 判断列表中是否存在指定元素
- 元素 not in 列表 - 判断列表中是否不存在指定元素
print(10 in [10, 20, 30]) # True print([10, 20] in [10, 20, 30]) # False print([10, 20] in [[10, 20], 30]) # True