语法:
列表:[开始下标:结束下标:步长]
说明:
开始下标 - 下标值(0开始的和-1开始的都行);确定切片优先范围的起点,可以取得
: - 固定写法
结束下标 - 下标值(0开始的和-1开始的都行);确定切片有效范围的终点,取不到
步长 - 决定切片的方向(步长对应的方向必须和开始到结束的方向一致,否则切片结果为空)
决定取元素的方式(一个一个的取还是跳着取)
注:切片的有效范围是:[开始下标,结束下标)
games = ['王者荣耀','和平精英','生化危机','原神','穿越火线','红警','诛仙','英雄联盟'] print(games[1:5:1]) # ['和平精英', '生化危机', '原神', '穿越火线'] print(games[1:-1:1]) # ['和平精英', '生化危机', '原神', '穿越火线', '红警', '诛仙'] print(games[3:-1:-1]) # [] print(games[0:-3:2]) # ['王者荣耀', '生化危机', '穿越火线'] print(games[-1:2:-2]) # ['英雄联盟', '红警', '原神'] print(games[2:-1:1]) # ['生化危机', '原神', '穿越火线', '红警', '诛仙']
列表[开始下标:结束下标]
省略步长,步长就是默认1
print(games[2:-2]) # ['生化危机', '原神', '穿越火线', '红警']
列表[:结束下标:步长] / 列表[:结束下标]
省略开始下标,如果步长为正,从第一个元素开始往后取,如果步长为负,从最后一个元素开始
print(games[:-3]) # ['王者荣耀', '和平精英', '生化危机', '原神', '穿越火线'] print(games[:3:-1]) # ['英雄联盟', '诛仙', '红警', '穿越火线']
列表[开始下标::步长]/列表[开始下标:]
省略结束下标:如果步长为正,从开始下标开始取到最后一个元素;如果步长为负,从开始下标取到第一个元素
print(games[1:]) # ['和平精英', '生化危机', '原神', '穿越火线', '红警', '诛仙', '英雄联盟'] print(games[2::2]) # ['生化危机', '穿越火线', '诛仙'] print(games[-2::-1]) # ['诛仙', '红警', '穿越火线', '原神', '生化危机', '和平精英', '王者荣耀']
列表[::步长]/列表[]
print(games[::-1]) # ['英雄联盟', '诛仙', '红警', '穿越火线', '原神', '生化危机', '和平精英', '王者荣耀'] print(games[::2]) # ['王者荣耀', '生化危机', '穿越火线', '诛仙']
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
del teleplays[2] print(teleplays) # ['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] del teleplays[-2] print(teleplays) # ['琅琊榜', '大秦', '康熙王朝', '破产姐妹', '亮剑', '西游记']
注意:如果元素不存在。会报错
如果元素有多个,只删除第一个
teleplays.remove('琅琊榜') print(teleplays) nums = [10,20,30,10,20,30,20] nums.remove(20)
列表.app() - 取出列表最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] del_item = teleplays.pop() # ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸'] print(teleplays) print(del_item) # 西游记 del_item = teleplays.pop(1) print(teleplays) print(del_item)
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] teleplays.clear() print(teleplays)
列表[下标] = 值 - 将列表中指定下标对应的元素修改成指定的值
teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] print(teleplays) teleplays[0] = '庆宇年' print(teleplays) # ['庆宇年', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记'] # 练习:将低于60的成绩改为0 scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] for x in range(len(scores)): if scores[x]<60: scores[x] = 0 print(scores) # 方法2 scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] for index ,item in enumerate(scores): if scores[index]<60: scores[index]=0 print(scores) # 方法3 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(0) else: new_scores.append(item) print(new_scores) # 练习2:删除列表中低于60分的成绩 scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] scores1=[] for i in range(len(scores)): if scores[i]>=60: scores1.append(scores[i]) print(scores1) scores = [90, 45, 56, 89, 76, 56, 92, 45, 30, 59, 67, 70] print(len(scores)) i=0 while i < len(scores): if scores[i]<60: del scores[i] else: i+=1 print(scores)
列表1+列表2 (把两个列表合并成一个新的列表)
列表1**N/N*列表1 (将N个列表1合并并产生一个新的列表)
print([1,2,30]+[4,8,16]) list1 = [100,200] list2 = [1000,2000] print(list1+list2,list1)
print([1,2,3] == [1,2,3]) # True print([1,2,3] == [1,3,2]) # false print({1,2,3} == {1,3,2}) # True 集合无序
两个列表比较大小的原理:比较第一对不相等的元素大小,谁第一位更大就是谁大,若一样则继续比较第二对(两个列表相同的元素为一对,这个下标从0开始)
print([1,200,300,400]>[10,2]) # False print([11,0,0,0]>[10,2]) # 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 score = 90 # 判断分数值是否存在100,60,0特殊值 if score==0 or score==60 or score==100: print('特殊值') if score in(0,60,100): print('存在特殊值') v = 34 if type(v)==int or type(v)==float or type(v)==complex or type(v)==bool: print('数字') else: print('不是数字') if type(v) in [int,float,complex,bool]: print('数字') else: print('不是数字')
1.已知一个数字列表,求列表中心元素。
list1 = [1,2,3,4,5,6,7,8] if len(list1)%2!=0: print('列表中心元素为',list1[len(list1)//2]) else: print('列表中心元素为',list1[len(list1)//2-1],'和',list1[len(list1) // 2])
2.已知一个数字列表,求所有元素和。
list1 = [1,2,3,4,5,6,7,8,9] sum1 = 0 for item in list1: sum1 += item print('所有元素和为:',sum1)
3.已知一个数字列表,输出所有奇数下标元素。
list1 = [1,2,3,4,5,6,7,8,9] for index in range(len(list1)): if index%2 != 0: print(list1[index],end='') print()
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
list1 = [1,2,3,4,5,6,7,8,9] for index in range(len(list1)): if list1[index]%2 != 0: print(list1[index],end='') print()
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
list1 = [1,2,3,4,5,6,7,8,9] for index in range(len(list1)): list1[index] *= 2 print(list1)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] i = 0 while i<len(names): j = i+1 while j<len(names): if names[i] != names[j]: j += 1 else: del names[j] i += 1 print(names)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
list1 = [1,2,3,4,5,6,7,8,9] max_num =list1[0] min_num = list1[0] for index in range(len(list1)): if max_num<list1[index]: max_num = list1[index] if min_num >list1[index]: min_num = list1[index] list1.remove(max_num) list1.remove(min_num) sum1=0 for item in list1: sum1+=item average = sum1/len(list1) print('平均数为:',average)
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 index1 in range(len(A)): for index2 in range(len(B)): if A[index1] == B[index2]: c.append(A[index1]) print(c)
9.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1] max_num = nums[0] for item in nums: if max_num < item: max_num=item print('最大值为:',max_num)
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] most_num = [] x = 0 start =1 for i in range(len(nums)): for j in range(len(nums)): if nums[i] == nums[j]: x +=1 y = x x = 0 if y > start: most_num = nums[i] start=y print('列表中出现次数最多的元素为:',most_num)