列表[开始下标:结束下标:步长]
说明:
开始下标
: - 固定写法
结束下标
步长
注:切片的有效范围是:[开始下标,结束下标)
例子
games = ['王者荣耀', '和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗'] print(games[1:5:1]) # ['和平精英', '使命召唤', '原神', '诛仙'] print(games[1:-1:1]) # ['和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警'] print(games[3:-1:-1]) # [] print(games[-1:-5:1]) # [] print(games[0:-3:2]) # ['王者荣耀', '使命召唤', '诛仙'] print(games[-1:2:-2]) # ['魂斗罗', '部落冲突', '诛仙'] print(games[2:-1:1]) # ['使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警']
列表[开始下标:结束下标] - 列表[开始洗标:结束下标:1]
例子
games = ['王者荣耀', '和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗'] print(games[2:-2]) # ['使命召唤', '原神', '诛仙', '穿越火线', '部落冲突']
列表[:结束下标:步长] - 省略开始下标
列表[:结束下标] - 开始下标与步长都省略
例子
print(games[:-3]) # ['王者荣耀', '和平精英', '使命召唤', '原神', '诛仙', '穿越火线'] print(games[:3:-1]) # ['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙']
列表[开始下标::步长] - 省略结束洗标
列表[开始下标:] - 省略结束下标与步长
结束下标省略后,步长为正则从开始下标取到最后一个元素,步长为负则从开始下标取到第一个元素
例子
games = ['王者荣耀', '和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗'] print(games[1:]) # ['和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗'] print(games[3::2]) # ['原神', '穿越火线', '红警'] print(games[-2::-1]) # ['红警', '部落冲突', '穿越火线', '诛仙', '原神', '使命召唤', '和平精英', '王者荣耀']
列表[::步长]
列表[:]
例子
print(games[::-1]) # ['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙', '原神', '使命召唤', '和平精英', '王者荣耀'] print(games[::2]) # ['王者荣耀', '使命召唤', '诛仙', '部落冲突', '魂斗罗'] print(games[:]) # ['王者荣耀', '和平精英', '使命召唤', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗']
删除列表中指定下标对应的元素;
下标不能越界;
例子
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] del teleplays[2] print(teleplays)
删除列表中指定的元素;
如果元素不存在,会报错;
如果匹配到多个元素,只会删除正方向第一个匹配项;
例子
teleplays.remove('琅琊榜') print(teleplays)
列表.pop() - 取出列表最后一个元素;
列表.pop(下标) - 取出列表中指定下标对应的元素;
例子
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] del_item = teleplays.pop() print(teleplays, del_item, sep='\n') del_item = teleplays.pop(2) print(teleplays, del_item, sep='\n')
将列表清空
例子
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] teleplays.clear() print(teleplays)
将列表指定下标对应的元素修改成指定的值;
例子
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] print(teleplays) teleplays[0] = '庆余年' print(teleplays)
练习1:将低于60分的成绩全部修改成0分
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] for i in range(len(scores)): if scores[i] < 60: scores[i] = 0 print(scores) scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] for index, item in enumerate(scores): if item < 60: scores[index] = 0 print(scores) scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] new_scores = [] for item in scores: if item >= 60: new_scores.append(item) else: new_scores.append(0) print(new_scores)
练习2:删除列表中低于60分的成绩
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] i = 0 while i < len(scores): if scores[i] < 60: scores.remove(scores[i]) continue i += 1 print(scores)
list1 = [100, 200] list2 = [111, 222] print(list1 + list2) # [100, 200, 111, 222] print(list1 * 3) # [100, 200, 100, 200, 100, 200]
print([1, 2, 3] == [1, 2, 3]) # True print([1, 2, 3] == [1, 3, 2]) # False print({1, 2, 3} == {1, 2, 3}) # True 集合无序
列表比较大小的原理:比较第一对不相等;
元素的大小(正索引方向下标相同的元素为一对);
print([1, 2, 3, 4, 5] > [10, 2]) # False print([10, 0, 1, 1, 1] > [9, 100]) # True
元素 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 v = 34 if type(v) in [int, float, bool]: print('数字') else: print('不是数字')
统计列表中指定元素的个数
nums = [10, 20, 30, 10] print(nums.count(10)) # 2 print(nums.count(100)) # 0
获取指定元素第一次出现在列表中的正索引;
print(nums.index(10)) # 0 print(nums.index(100)) # 指定的元素不在列表中会报错
对列表进行逆序
nums = [10, 20, 3, 5] nums.reverse() print(nums) # [5, 3, 20, 10]
将列表中的元素从小到大排序[从大到小]
nums = [10, 20, 5, 2, 100] nums.sort() print(nums) # [2, 5, 10, 20, 100] nums.sort(reverse=True) print(nums) # [100, 20, 10, 5, 2]
1.已知一个数字列表,求列表中心元素。
# list1 = [1, 2, 3, 4, 5, 6, 7] list1 = [1, 2, 3, 4, 5, 6, 7, 8] if not list1: pass elif len(list1) % 2 == 1: while len(list1) != 1: list1.pop(0) list1.pop() else: while len(list1) != 2: list1.pop(0) list1.pop() print(list1)
2.已知一个数字列表,求所有元素和。
list1 = [1, 2, 3, 4, 5, 6, 7] sum1 = 0 for item in list1: sum1 += item print(sum1)
3.已知一个数字列表,输出所有奇数下标元素。
list1 = [1, 2, 3, 4, 5, 6, 7] for index, _ in enumerate(list1): if index % 2 == 1: print(list1[index])
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
list1 = [1, 2, 3, 4, 5, 6, 7] for item in list1: if item % 2 == 1: print(item)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
list1 = [1, 2, 3, 4, 5, 6, 7, 8] for index, _ in enumerate(list1): list1[index] = list1[index]*2 print(list1) # [2, 4, 6, 8, 10, 12, 14, 16]
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三', '赵一', '钱二', '孙三'] index1 = 0 while index1 < len(names): if names.count(names[index1]) == 1: index1 += 1 else: names.remove(names[index1]) print(names) # ['李四', '大黄', '张三', '赵一', '钱二', '孙三']
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] sum1 = 0 scores.sort() scores.pop(0) scores.pop(-1) for item in scores: sum1 += item print(sum1) # 653
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, item in enumerate(B): if A[i] == B[j]: C.append(item) print(C) # [1, 'a']
9.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1] nums.sort() print(nums[-1]) # 600
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] max_num, count = 0, 0 for item in nums: if nums.count(item) > count: count = nums.count(item) max_num = item print(max_num) # 3