Day5 List操作
1. 增加
-
列表.append(元素) - 在列表的最后添加指定元素
tvs = ['回家的诱惑','非自然死亡','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','请回答1988'] print(tvs) tvs.append('生活大爆炸') print(tvs)
练习:用一个列表保存100以内所有能被3整除的数
num = [] for i in range(0,101,3): num.append(i) print(num)
-
列表.insert(下标,元素) - 在列表的指定下标所在的位置前插入指定元素
tvs.insert(1,'人民的名义') print(tvs)
练习:
scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56] num = int(input('请输入成绩:')) for i in range(len(scores)): if num >= scores[i]: scores.insert(i,num) break else: scores.append(num) print(scores)
2. 删除
-
del 列表[下标] - 删除列表中指定下标对应的元素
tvs = ['回家的诱惑','非自然死亡','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','请回答1988'] del tvs[1] print(tvs) #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988'] del tvs[-1] print(tvs) #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
-
列表.remove(元素) - 删除列表中指定元素
- 如果需要删除的元素在列表中有多个,只删最前面那个
- 如果需要删除的元素不存在,程序会报错
tvs = ['回家的诱惑','非自然死亡','琅琊榜','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','琅琊榜','请回答1988']
print(tvs) #['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs.remove('非自然死亡')
print(tvs) #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
# tvs.remove('行尸走肉')
print(tvs) #list.remove(x): x not in list
练习:删除tvs中最后一个’琅琊榜’
for i in range(-1,-len(tvs),-1):
if tvs[i] == '琅琊榜':
del tvs[i]
break
print(tvs)
+ 列表.pop() - 取出列表最后一个元素,并且返回
+ 列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回
```python
print(tvs) #['回家的诱惑', '琅琊榜', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
print(tvs.pop()) #请回答1988
print(tvs) #['回家的诱惑', '琅琊榜', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
tvs.pop(1)
print(tvs)
```
3. 改:
-
list[下标] = 新值 - 修改列表中指定下标对应的元素
tvs = ['回家的诱惑','非自然死亡','琅琊榜','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','琅琊榜','请回答1988'] tvs[0] = '行尸走肉' print(tvs)
练习:删除scores中所有小于60分的成绩
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30] while True: for i in range(len(scores)): if scores[i] < 60: del scores[i] break else: break print(scores)
# 解决坑一 # 在删除之前对原列表中数据进行备份,遍历备份数据,删除原数据 temp = scores[:] #scores[:]:创建一个新的列表,新列表中的元素和scores一模一样 for s in temp: if s < 60: scores.remove(s) print(scores)
# 补充:如果用一个列表变量给另外一个变量赋值,赋的是原变量中数据的地址 a = [10, 20, 30] b = a c = a[:] a.append(100) print(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) 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] new_scores = [] for x in scores: if x >= 60: new_scores.append(x) print(new_scores)
4.相关操作
-
加法和乘法运算
-
列表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
num = 9 if num == 10 or num == 20 or num == 30: print('是') if num in [10, 20, 30]: print('是')
-
作业
1.已知一个数字列表,求列表中心元素。
list1 = []
if len(list1) // 2:
print(list1[len(list1)//2])
else:
print(list1[len(list1)//2-1],list1[len(list1)//2])
2.已知一个数字列表,求所有元素和。
sum = 0
list1=[]
for i in range(len(list1)):
sum += list1[i]
print('列表元素和:',sum)
3.已知一个数字列表,输出所有奇数下标元素。
index = 1
list1 = []
while True:
print(list1[index])
index += 2
if index > len(list1):
break
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
list1 = []
for value in list1:
if value % 2:
print(value)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
list1 = []
list2 = []
for value in list1:
list2.append(value*2)
print(list2)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
list1 =['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
list2 = []
for i in range(len(list1)):
if list1[i] not in list2:
list2.append(list1[i])
print(list2)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
score = [14,58,42,13,69,23]
for x in range(len(score)):
for j in range(x,len(score)):
if score[x] > score[j]:
score[x],score[j] = score[j],score[x]
del score[0]
del score[len(score)-1]
print(score)
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]
A = [1,5,7,9,6,3,5]
B = [2,4,6,9,3,]
C = []
if len(A) > len(B):
for i in range(len(A)):
if A[i] in B:
C.append(A[i])
else:
for i in range(len(B)):
if B[i] in A:
C.append(B[i])
print(C)
9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
num=[15,10,56,23,34,71,41]
for i in range(len(num)):
for j in range(i+1,len(num)):
if num[i] < num[j]:
num[i],num[j] = num[j],num[i]
print(num[0])
10.*获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3
counts =[]
count = 0
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
for x in range(len(nums)):
for i in range(0,len(nums)):
if nums[i] == nums[x]:
count += 1
counts.append(count)
count = 0
print('列表中出现次数最多的元素:',nums[counts.index(max(counts))])