Day5_列表的增删改
总结:
列表的增删改
1.增 - 添加元素
- 列表.append(元素) - 在列表的最后添加指定元素。
- 列表.insert(下标,元素) - 在列表的指定下标所在的位置前插入指定元素。
2.删 - 删除列表中的元素
-
del 列表[下标] - 删除列表中指定下标对应的元素。
注意:下标不能越界! 越界程序会报错。
-
列表.remove(元素) - 删除列表中指定元素。
注意:如果要删除的元素在列表中有多个,只删除最前面的一个;
如果要删除的元素不存在,程序会报错。
-
列表.pop() - 取出列表最后一个元素,并且返回。
列表.pop(下标) - 取出列表对应下标的元素,并且返回。
3.改 - 列表[下标] = 新值 - 修改列表中指定下标对应的元素
补充 :如果直接用一个列表变量给另一个变量赋值,赋的是原变量中数据的地址。
列表相关操作
1.列表的加法和乘法运算:
list1 = [10,20]
list2 = [30,40]
print(list2+list1) #[10,20,30,40]
print(list2*3) #[30,40,30,40,30,40]
- 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.已知一个数字列表,求列表中心元素。
nums = [11,21,31,41,24,31,54]
if len(nums) == 0:
print('该列表是一个空列表!')
elif len(nums) % 2:
print(nums[len(nums)//2])
else:
print(nums[len(nums)//2])
print(nums[len(nums) // 2 -1])
2.已知一个数字列表,求所有元素和。
nums = [11,21,31,41,24,31,54]
# 方法一
sum1 = 0
for x in nums:
sum1 += x
print(sum1)
#方法二
sum1 = 0
for index in range(len(nums)):
sum1 += nums[index]
print(sum1)
3.已知一个数字列表,输出所有奇数下标元素。
nums = [11,21,31,41,24,31,54]
for index in range(len(nums)):
if index % 2:
print(nums[index])
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
nums = [11,21,31,41,24,31,54]
for x in nums:
if x % 2:
print(x)
5.已知一个数字列表,将所有元素乘二。
#例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
nums = [1, 2, 3, 4]
for index in range(len(nums)):
nums[index] *= 2
print(nums)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的。
#例如:names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] -> names = ['张三', '李四', '大黄']
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
names_new = names[:]
for x in names:
while True:
if x in names_new:
names_new.remove(x)
else:
names_new.append(x)
break
print(names_new)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分) 。
# 方法一
scores = [92,58,64,75,84,79,69,88,86,97]
max1 = min1 = scores[0]
sum1 = 0
count = 0
for x in scores:
if x > max1:
max1 = x
if x < min1:
min1 = x
sum1 += x
count += 1
print('平均分:',(sum1-max1-min1)/(count-2))
#方法二
scores = [92,58,64,75,84,79,69,88,86,97]
num = min(scores) + max(scores)
print(num)
sum1 = 0
for x in scores:
sum1 += x
print((sum1 - num)/(len(scores)-2))
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
A = [1, 'a', 4, 90]
B = [8, 'j', 1,'a']
C = []
if len( A ) <= len( B ):
for x in A:
if x in B:
C.append(x)
else:
for x in B:
if x in A:
C.append(x)
print(C)
9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数。
#例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1]
max_num = nums[0]
for x in nums:
if x in
else:
nums_max = x
print(nums_max)
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]
nums_new = nums[:]
list1 = []
for x in nums_new:
nums.remove(x)
if x not in nums:
list1.append(x)
for _ in range(len(nums_new)-len(list1)):
for x in list1:
if x in nums_new:
nums_new.remove(x)
if len(nums_new) == 1:
break
print(nums_new[0])