增 - 添加元素
列表.append(元素) - 在列表的最后添加指定元素(不会产生新的数据,在原数组中直接增加)
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
print(tvs)
tvs.append('生活大爆炸')
print(tvs)
# 练习:用一个列表保存100以内所有能被3整除的数
num = []
for x in range(0, 100, 3):
num.append(x)
print(num)
列表.insert (下标, 元素) - 在列表指定的下标所在的位置前,插入指定元素(位置前!)
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs.insert(1, '人民的名义')
print(tvs)
# 练习: 输入一个列表 score 按分数从高到低,保存了一个班的学生的分数,请输入一个新的分数,插入到score中,不影响排序
score = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
score1 = 40
for x in range(len(score)): # 遍历出下标 range(len())
if score1 > score[x]: # 新的元素和 根据下标表示的元素,做比较,
score.insert(x, score1) # 新的元素比列表中某一个元素大的时候就插入进去
break # 只需要插入一次,所以break
else:
score.append(score1) # 循环结束都没找到,表示数据是最小的一个,直接添加到数组最后
print(score)
删 - 删除列表重点元素(也不会产生新的数据,只会改变个数)
del 列表[下标] - 删除列表中指定下标对应的元素
注意: 下标不能越界
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
del tvs[-1]
print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
列表.remove(元素) - 删除列表中指定的元素
如果需要删除的元素在列表中存在的多个,只会删除最前面的一个
如果需要删除一个不存在的元素,程序会报错
tvs = ['回家的诱惑', '非自然死亡', '琅琊榜', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '琅琊榜', '请回答1988']
tvs.remove('琅琊榜')
print(tvs)
tvs.remove('吸血鬼日记')
print(tvs) # ValueError: list.remove(x): x not in list 不存在list中
# 练习tvs中最后一个琅琊榜 (通过反向获取下标,删除)
for index in range(-1, -len(tvs)-1, -1):
if tvs[index] == '琅琊榜':
del tvs[index]
break
print(tvs)
列表.pop() - 取出列表中最后一个元素, 并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素, 并且返回
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs.pop()
tvs.pop(0)
num = tvs.pop() # 取出的元素可以返回
num2 = tvs.pop(1)
print(num, num2)
改
列表[下标] = 新值 - 修改列表中指定下标对应的元素
tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs[1] = '行尸走肉'
print(tvs)
# 练习:删除列表中所有小于60分的成绩
scores = [87, 34, 50, 23, 78, 99, 45, 23, 23, 76, 89, 30]
scores2 = []
for x in scores: # 提取列表中小于60的数,保存在scores2中,
if x < 60:
scores2.append(x)
for y in scores2: # 在scores中删除,scores2循环出来的y
scores.remove(y)
print(scores)
# 或者
# 在删除之前对原列表中的数据备份,遍历备份数据,删除原数据
scores = [87, 34, 50, 23, 78, 99, 45, 23, 23, 76, 89, 30]
temp = scores[:] # scores[:] - 创建一个新的列表,新列表中的元素和 score一模一样
for s in temp:
if s < 60:
scores.remove(s)
print(scores)
作业
- 已知一个数字列表,求列表的中心元素
arr = [11, 21, 31, 41, 51, 24, 54]
if len(arr) == 0:
print('列表为空')
elif len(arr) % 2:
print(arr[(len(arr)-1)//2])
else:
print(arr[(len(arr)//2)])
print(arr[(len(arr)//2 - 1)])
- 已知一个数字列表,求所有元素和
arr = [11, 21, 31, 41, 51, 24, 54]
sum1 = 0
for x in arr:
sum1 += x
print(sum1)
- 已知一个数字列表,输出所有奇数下标元素
arr = [11, 21, 31, 41, 51, 24, 54]
for index in range(len(arr)):
if index % 2:
print(arr[index])
- 已知一个数字列表,输出所有元素中,值为奇数的元素
arr = [11, 21, 31, 41, 51, 24, 54]
for x in arr:
if x % 2:
print(x)
- 已知一个数字列表,将所有元素乘二
arr = [1, 2, 3, 4]
for index in range(len(arr)):
arr[index] *= 2
print(arr)
- 有一个长度是10的列表,数组内有10个人名,要求去掉重复的。
# 例如:names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] -> names = ['张三', '李四', '大黄']
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
new_names = names[:]
for x in names:
while True:
if x in new_names:
new_names.remove(x)
else:
new_names.append(x)
break
print(new_names)
- 有两个列表A 和 B 使用列表C 来获取两个列表中的公共元素
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
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)
- *有一个数字列表,获取这个列表中的最大值(注意,不能使用max函数)
nums = [19, 89, 90, 600, 1]
for x in nums:
for y in nums:
if x >= y:
pass
else:
break
else:
max_nums = x
print(max_nums)
- *获取列表中出现次数最多的元素
nums = [1,2,3,1,5,2,1,3,7,3,3]
new_nums = nums[:]
list1 = []
for x in new_nums:
nums.remove(x)
if x not in nums:
list1.append(x)
for _ in range(len(new_nums)-len(list1)):
for x in list1:
if x in new_nums:
new_nums.remove(x)
if len(new_nums) == 1:
break
print(new_nums[0])