day5 列表的增删改

列表的增删改

1.增 - 添加元素

1)列表.append(元素) - 在列表的最后添加指定元素。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
tvs.append('生活大爆炸')
print(tvs)  # 结果:['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代', '生活大爆炸']

练习:用一个列表保存100以内所有能被3整除数

list_1 = []
for i in range(0, 100, 3):
    list_1.append(i)
print(list_1)

2)列表.insert(下标,元素) - 在列表的指定下标所在的位置前插入指定元素。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
tvs.insert(1, '人民的名义')
print(tvs)  # 结果:['回家的诱惑', '人民的名义', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']

练习:已经一个列表scores按分数从高到低保存了一个班学生的分数,请输入一个新的分数,
将新的分数插入到scores中,并且保证插入后不影响,scores是从大到小排序的。

scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
num = int(input('请输入需要插入的分数:'))
for i in range(len(scores)):
    if scores[i] < num:
        scores.insert(i, num)
        break
else:
    scores.append(num)  # 遍历列表所有分数都大于num,则在末尾添加num。
print(scores)

2. 删 - 删除列表中的元素。

1)del 列表[下标] - 删除列表中指定下标对应的元素;下标不能越界。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
del tvs[1]
print(tvs)  # ['回家的诱惑', '亮剑', '请回答1988', '觉醒年代']

2) 列表.remove(元素) - 删除列表中指定元素
如果需要删除的元素在列表中有多个,只删最前面的一个。
如果需要删除的元素不存在,程序会报错。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
tvs.remove('回家的诱惑')
print(tvs)  # ['非自然死亡', '亮剑', '请回答1988', '觉醒年代']

scores = [98, 93, 91, 83,  80, 77, 70, 83, 65, 62, 56]
scores.remove(83)
print(scores)   # [98, 93, 91, 80, 77, 70, 83, 65, 62, 56]

# 倒序遍历则删除倒序遍历的第一个元素。
tvs = ['回家的诱惑', '琅琊榜', '非自然死亡', '亮剑', '琅琊榜', '请回答1988', '觉醒年代', '琅琊榜']
for i in range(-1, -len(tvs)-1, -1):
    if tvs[i] == '琅琊榜':
        del tvs[i]
        break
print(tvs)  # ['回家的诱惑', '琅琊榜', '非自然死亡', '亮剑', '琅琊榜', '请回答1988', '觉醒年代']

3)列表.pop() - 取出列表最后一个元素。
列表.pop(下标) - 取出列表中指定1下标对应的元素。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
res_1 = tvs.pop()   # ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988']
print(tvs)
res_2 = tvs.pop(1)
print(tvs)  # ['回家的诱惑', '亮剑', '请回答1988']
print(res_1)    # 觉醒年代
print(res_2)    # 非自然死亡

3.改:列表[下标] = 新值 - 修改列表中指定下标对应的元素。

tvs = ['回家的诱惑', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']
tvs[0] = 'POI疑犯追踪'
print(tvs)  # ['POI疑犯追踪', '非自然死亡', '亮剑', '请回答1988', '觉醒年代']

补充4. 如果直接用一个列表变量给另一个变量赋值,赋的是原来变量中列表的地址。

练习:删除scores中所有小于60分的成绩

scores_1 = []
scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
for i in range(len(scores)):
    if scores[i] > 60:
        scores_1.append(scores[i])
scores = scores_1
print(scores)

方法1:

scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
temp = scores[:]    # 列表1 = 列表2[:]  -   创建一个新的列表1,新列表1中的元素和列表2一样。
for i in temp:  # 遍历新列表的元素
    if i < 60:
        scores.remove(i)    # 删除旧列表中的元素
print(scores)

方法2:

scores_1 = []
scores_2 = []
scores = [87, 34, 50, 60, 23, 78, 99, 45, 23, 76, 89, 30]
for i in range(len(scores)):
    if scores[i] < 60:
        scores_1.append(scores[i])
for i in range(len(scores)):
    if scores[i] >= 60:
        scores_2.append(scores[i])
print('不及格的:', scores_1)
print('及格的:', scores_2)

方法3:

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)

1.加法和乘法运算。

列表1 + 列表2 - 将两个列表合并产生一个新的列表。
应用1:

list1 = [1, 2, 3] + ['a', 'b', 'c']
print(list1)    # [1, 2, 3, 'a', 'b', 'c']

列表 * N - 列表中的元素重复N次产生一个新的列表。

list2 = [1, 2, 'a'] * 3
print(list2) # [1, 2, 'a', 1, 2, 'a', 1, 2, 'a']

2.in 和 not in

元素 in 列表 - 判断列表中是否存在指定元素
元素 not in 列表 - 判断列表中是否不存在指定元素
应用1:

print(10 in [10, 20, 30])   # True
print([10, 20] in [10, 20, 30])     # False
print([10, 20] in [10, 20, 30, [10, 20]])   # True

num = 10
if num == 10 or num == 20 or num == 30:
    print('是')
#优化写法
if num in[10, 20, 30]:
    print('是')

作业

1.已知一个数字列表,求列表中心元素。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mid = len(nums)//2
if mid != len(nums) / 2:
	print(nums[mid])
else:
	print(nums[mid-1],nums[mid])

2.已知一个数字列表,求所有元素和。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
count = 0
for i in nums:
	count += i
print(count)

3.已知一个数字列表,输出所有奇数下标元素。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[1:len(nums):2])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
odd = []
for i in nums:
	if i % 2 != 0 and i != 0:
		odd.append(i)
print(odd)

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

nums = [1, 2, 3, 4]
num = []
for i in nums:
	x = i * 2
	num.append(x)
nums = num

#方法2
for index in range(len(nums)):
    nums[index] *= 2
print(nums)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
name = []
for i in names:
	if i not in name:
		name.append(i)
else:
	names = name
print(names)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

score = [66,91,90,85,86,70,99,84,95]
num_sum = 0
num_h = 0
num_s = score[0]
for i in score:
	if i > num_h:
		num_h = i
	elif num_s > i:
		num_s = i
else:
	score.remove(num_h)
	score.remove(num_s)
for x in score:
	num_sum += x
print(num_sum / len(score))

# 方法2
score = [66, 91, 90, 85, 86, 70, 99, 84, 95]
max1 = min1 = score[0]
sum1 = 0
count = 0
for i in score:
    if i > max1:
        max1 = i
    if i < min1:
        min1 = i
    sum1 += i
    count += 1
print((sum1-max1-min1)/ (count-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 A:
	for x in B:
		if i == x:
			C.append(i)
print(C)

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

nums = [19, 89, 90, 600, 1]  

a = nums[0]
for i in nums[1:]:
	if i > a:
		a = i
print(a)

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, 1]
_nums = []
_nums1 = []
while True:
    _nums1 = []
    for x in nums:
        if x not in _nums:
            _nums.append(x)
        else:
            _nums1.append(x)
    if len(_nums1):
        _nums = []
        nums = _nums1
    else:
        print(_nums)
        break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值