列表的增删改
-
增 - 添加元素
-
1) 列表.append(元素) 在列表的最后追加指定元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] print(tvs) tvs.append('生活大爆炸') print(tvs) # 练习 用一个列表保存100以内所有能被3整除的数 list1 = [] for i in range(3, 100, 3): list1.append(i) print(list1)
-
- 列表.insert(下标,元素) - 在指定下标所在位置前插入元素
tvs.insert(1, '人民的名义') print(tvs) # 练习 已经一个列表scores按分数从高到低保存了一个班学生的分数,请输入一个新的分数,将新的分数插入到scores中,并且保证插入后不影响 scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56] num = int(input('请输入成绩:')) for index in range(len(scores)): if num >= scores[index]: scores.insert(index, num) break else: scores.append(num) print(scores)
-
-
删 - 删除列表中的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '琅琊榜','琅琊榜','甄嬛传', '亮剑', '请回答1988'] print(tvs)
-
1)del 列表[下标] - 删除列表中指定下标对应的元素
del tvs[1] print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] del tvs[-1] print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑'] # 下标越界 # del tvs[6] # IndexError: list assignment index out of range
-
- 列表.remove(元素) - 删除列表中指定元素
#如果删除的元素在列表中有多个,只删除最前面第一个 tvs.remove('非自然死亡') print(tvs) tvs.remove('琅琊榜') print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] tvs.remove('吸血鬼日记') print(tvs) # ValueError: list.remove(x): x not in list 删除重复元素中的最后一个 for index in range(-1, -len(tvs), -1): if tvs[index] == '琅琊榜': del tvs[index] break print(tvs)
-
3)列表.pop() - 取出列表最后一个元素,并且返回
列表.pop(下标) - 取出列表指定下标对应的元素,并且返回
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] print(tvs) res1 = tvs.pop() print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑'] res2 = tvs.pop(1) print(tvs) # ['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑'] print(res1, res2) # 请回答1988 非自然死亡
-
-
改 : 列表[下标] = 新值 - 修改列表中指定下标的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] print(tvs) tvs[0] = '行尸走肉' print(tvs) # ['行尸走肉', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
-
练习:删除scores中所有小于60分的成绩
# 1)坑一 下标改变,删除不完 for s in scores: if s < 60: scores.remove(s) print(scores) # [87, 50, 78, 99, 23, 76, 89] # 解决: 在删除之前先备份,遍历备份数据 # 拷贝一份 #f1 list1 =[] for i in range(len(scores)): list1.append(scores[i]) print(list1) #f2 temp = scores #不能直接复制,只复制了地址 temp = scores[:] for x in temp: if x < 60: scores.remove(x) print(scores) # [87, 78, 99, 76, 89] # 补充: 如果直接用一个列表变量给另一个变量赋值,赋的是原变量中数据的地址 a=[10,20,30] b=a c=a[:] a.append(100) print(b) # b也改变 [10, 20, 30, 100] print(c) # [10, 20, 30]
# 下标越界 scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30] #for index in range(len(scores)): # if scores[index] < 60: # del scores[index] #print(scores) #下标越界 i = 0 while True: #用while循环控制循环次数,跳过再+1 if scores[i] >= 60: i += 1 else: del scores[i] if i >= len(scores): break print(scores)
# 从后往前遍历 for index in range(len(scores)-1,-1,-1): if scores[index]<60: del scores[index] print(scores)
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30] # [87, 78, 99, 76, 89] list1 = [] for s in scores: if s >= 60: # print(scores[i]) list1.append(s) #提取及格 print(list1) print(scores)
list 相关操作
-
1.加法和乘法运算
-
列表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]
-
-
2.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 # 1. num = 9 if num == 10 or num == 11 or num == 12: pass if num in [10,20,30]: pass # 2. x = 89 if type(x) == int or type(x) == float: pass if type(x) in [int, float]: pass
-
作业
1.已知一个数字列表,求列表中心元素。
num = [2,3,5,8,6,4,6,5,7,3,5,2]
if len(num) % 2:
print(num[len(num) // 2])
else:
print(num[len(num) // 2 -1], num[len(num) // 2])
2.已知一个数字列表,求所有元素和。
num = [2,3,5,8,6,4,6,5,7,3,5,2]
s = 0
for n in num:
s += n
print(s)
3.已知一个数字列表,输出所有奇数下标元素。
num = [2,3,5,8,6,4,6,5,7,3,5,2]
list1=[]
for index in range(len(num)):
if num[index] % 2:
list1.append(index)
print(list1) #[1, 2, 7, 8, 9, 10]
nums=[1,2,3,4,5,6]
print(nums[1::2]) #切片
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
num = [2,3,5,8,6,4,6,5,7,3,5,2]
for n in num:
if n % 2:
print(n)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
num = [1,2,3,4]
list2=[]
for n in num:
list2.append(n*2)
print(list2)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
#f1
names=['张三', '李四', '大黄', '大黄', '张三', '张三', '张三','王五','大黄','王五']
list3 = []
for n in names:
if list3.count(n) < 1:
list3.append(n)
print(list3)
#f2 利用集合
names=['张三', '李四', '大黄', '大黄', '张三', '张三', '张三','王五','大黄','王五']
names =list(set(names))
print((names))
# 去重
names=[1,5,2,1,4,2,4,6]
new_name = []
for name in names:
if name not in new_name:
new_name.append(name)
print(new_name)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
scores=[90,70,75,65,83,84,86,82,84]
scores.remove(max(scores))
scores.remove(min(scores))
s=0
for x in scores:
s+=x
print(s/len(scores))
# f2
print(sum(score)-max(score)-min(score))/len(score)-2
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C=[]
for i in range(len(A)):
for j in range(len(B)):
if A[i] == B[j]:
C.append(A[i])
print(C)
9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1]
max1 = 0
for x in nums:
if x >= max1:
max1 = x
print(max1)
10.*获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3
nums = [1, 2, 3,1,4,2,1,3,7,3,3]
c=[]
max2=0
for n in nums:
c.append(nums.count(n))
# print(c)
for x in c:
if x >= max2:
max2 = x
# print(max2)
for i in range(len(c)):
if max2 ==c[i]:
print(nums[i])
#f2
# 去重 -> 统计个数