列表
1、什么是列表 (list)
列表是容器型数据类型;将中括号作为容器标准,里面多个数据用逗号隔开:[元素1,元素2,元素3,…]
特征:
1)列表是可变(可变指的是元素的个数可变;元素的值可变;元素的顺序可变)
2)列表是有序(每个元素都有一个表示元素在列表中位置的序号)
元素(容器中每个独立的数据就是元素):没有要求(任何类型的数据都行都可以作为列表的元素)
student=['张丁也','钟林君','程赟','陶皞']
print(student)
names=[ ] # [] - 空列表 ,里面有空格也是空列表
print(names,bool(names)) # False
list1=[12,3,4,'asx',12,True,[1,2]]
print(list1)
2.关于列表的操作:
查 – 获取元素
2、1查单个 – 获取列表中某一个元素
‘’’
语法:
列表[下标] - 获取列表中指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,例如:具体的一个列表值、保存列表的变量
[] - 固定写法
下标 - 又叫索引。它是元素在列表中的位置信息
取值方式一:从0开始依次增加,其中0是第一个元素,1是第二个元素
取值方式二:从-1开始依次减少,其中-1表示倒数第一个,-2表示倒数第二个…
names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[2]) # 王力宏
print(names[-2]) # 薛之谦
print(names[6]) # 报错 list index out of range
print(names[3]) # 陈奕迅
print([12,23][1]) # 23
2、2 切片(查部分) - 同时获取列表中的多个元素
原理:通过提供下标的范围来获取范围内的下标对应的元素
语法:
列表[开始下标:结束的下标:步长] - 从开始下标开始,依次下标值增加步长,取到结束下标前为止。
注意:
1) 结束下标对应值的元素一定取不到,开始的下标对应的元素可以取到
2) 如果步长为正,表示从前往后取,这个时候开始下标对应的位置必须在结束下标对应位置前,否则结果是[]
3) 如果步长为负,表示从后往前取,这个时候开始下标对应的位置必须在结束下标对应位置后,否则结果是[]
names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[1:4:1]) # ['周杰伦','王力宏','陈奕迅']
print(names[1:-1:1]) # ['周杰伦','王力宏','陈奕迅','薛之谦']
print(names[1:5:-1]) # []
print(names[1:4:2]) # ['周杰伦','陈奕迅']
print(names[-5:4:2]) # ['周杰伦','陈奕迅']
print(names[5:1:-3]) # ['邓紫棋','王力宏']
print(names[-1:1:-3]) # ['邓紫棋','王力宏']
- 省略步长 - 相当于步长为1
列表[开始下标:结束下标]
names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[-5:3]) # ['周杰伦','王力宏']
print(names[4:-6]) # []
2)省略开始下标
列表 [:结束下标:步长] - 步长为正,从一个元素开始往后取。步长为负,从最后开始取
#列表 [:结束下标] - 从第一个元素开始往后取
heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[:4:2]) # ['后裔','诸葛亮']
print(heros[:2:-1]) # ['孙斌', '王昭君', '甄姬', '娜可露露']
print(heros[:-1]) # ['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君']
3)省略结束下标
列表[开始下标::步长] —— 步长为正,从开始下标取到最后个元素(往后取,取完为止);步长为负,从开始下标开始取到第一个元素为止
列表[开始下标:] - 从开始下标取到最后一个为止
heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[1:]) # heros=['李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[2::-1]) # ['诸葛亮', '李元芳', '后裔']
print(heros[-1::-2]) # ['孙斌','甄姬','诸葛亮','后裔']
4)一起省
列表[::步长] - 整个列表
列表 [:] - 整个列表
heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[::-1]) # ['孙斌','王昭君','甄姬','娜可露露','诸葛亮','李元芳','后裔']
print(heros[::2]) # ['后裔','诸葛亮','甄姬','孙斌']
print(heros[:]) # ['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
2、3 遍历
方法一: 直接获取元素
for变量 in 列表:
循环体
变量取到的是列表中的每个元素
games=['王者荣耀','和平精英','狼人杀','植物大战僵尸','开心消消乐']
for x in games:
print(x)
练习:统计列表中分数不及格的个数
scores=[90,89,67,54,32,99,67,100]
count=0
for x in scores:
if x < 60:
count+=1
print(count) # 2
方法二: 先获取每个元素对应的下标,然后在通过下标获取元素
for 变量 in range(列表长度)
列表[变量]
len(列表) - 获取列表中的元素个数
games=['王者荣耀','和平精英','狼人杀','植物大战僵尸','开心消消乐']
for x in range(5):
print(x,games[x])
练习:给一个数字列表,打印列表中所有3的倍数对应的元素。
nums=[23,9,34,5,15,6]
for x in nums:
if x % 3==0:
print(x) # 9 15 6
1、增 - 往列表中添加元素
1、1 列表.append(元素) - 在列表的最后添加指定的元素
subjects=['IOS','安卓']
subjects.append('h5')
print(subjects) # ['IOS', '安卓', 'h5']
subjects.append([10,20])
print(subjects) # ['IOS','安卓','h5',[10,20]]
1、2 列表.insert( 下标,元素) - 在列表的指定下标对应的元素前插入指定元素
tvs=['甄嬛传','还珠格格','情深深雨蒙蒙','琅琊榜']
tvs.insert(1,'庆余年')
print(tvs) # ['甄嬛传','庆余年','还珠格格','情深深雨蒙蒙','琅琊榜']
练习:将输入的成绩插到scores中,要求插入后不影响分数的从大到小的排序性质
scores=[100,98,97,97,89,86,72,66,63,59,42]
n=80
for x in range(len(scores)):
if scores[x] < =n:
scores.insert(x,n)
break
else:
scores.append(n)
print(scores)
2、删 - 删列表中的元素
2、1 del 列表[下标] - 删除列表中指定下标的对应的元素
tvs=['甄嬛传','还珠格格','情深深雨蒙蒙','琅琊榜']
del tvs[2]
print(tvs) # ['甄嬛传','还珠格格','琅琊榜']
2、2 列表.remove(元素) - 删除列表中指定的元素
如果元素不存在会报错,如果列表中有多个,只删一个
tvs=['西游记', '甄嬛传', '庆余年', '庆余年','还珠格格', '情深深雨蒙蒙', '琅琊榜']
tvs.remove('庆余年')
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
2、3
列表.pop() - 取出列表最后一个元素,并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素
tvs=['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
result=tvs.pop()
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙']
print(result) # 琅琊榜
3、改 - 修改元素的值
列表[下标] = 新元素 - 修改列表中指定下标对应的元素为新元素
tvs=['琅琊榜','庆余年','甄嬛传']
tvs[0]='生活大爆炸'
print(tvs) # ['生活大爆炸', '庆余年', '甄嬛传']
练习将分数列表中所有低于60分的修改成不及格
scores=[78,90,20,34,78,99,34,55]
for x in range(len(scores)):
if scores[x] < 60:
scores[x]='不及格'
print(scores) # [78, 90, '不及格', '不及格', 78, 99, '不及格', '不及格']
1、列表的数学运算 :+ 、 *
1、1 列表1+列表2 - 将两个列表合并产生一个新的列表
list1=[10,20,30]
list2=[100,200]
print(list2+list1) # [100, 200, 10, 20, 30]
print(list2,list1) # [100, 200] [10, 20, 30]
1、2 列表N 或者N列表 - 将列表中的元素重复N次产生一个新的列表
print(list2*3) # [100, 200, 100, 200, 100, 200]
2、比较运算: ==、!=、>、<、>=、<=
2、1比较是否相等
print([10,20,30]==[20,10,30]) # False
2、2 比较大小 - 和个数无关,比较第一对不相等的元素的大小(两个列表相等位置上的元素的元素是一对)
print([100,200]>[10,20,30,40,1000]) # True
print([100,200,300]>[100,1000,2]) # False
- in 和 not in
元素 in 列表 - 判断元素是否在指定的列表中
元素 not in 列表 - 判断元素不在指定列表中
print(100 in [10,20]) # False
print(100 not in [10,20]) # True
print([10] in [10,20]) # False
4、相关函数: max 、min、sorted、sum、list、len
4、1 max(列表) - 获取列表中最大的元素(注意:列表的数据的性质一样,类型一致,并且元素本身支持比较元素)
nums=[89,923,78,100,92,8]
print(nums) # 923
print(min(nums)) # 8
4、2 sorted(列表) - 将列表中的元素从小到大排序,产生一个新的列表
nums=[89,923,78,100,92,8]
new_nums=sorted(nums)
print(new_nums) # [8, 78, 89, 92, 100, 923]
sorted(列表,reverse=True) - 将列表中的元素从大到小排序,排序后产生一个新的列表
nums=[89,923,78,100,92,8]
new_nums=sorted(nums,reverse=True)
print(new_nums) # [923, 100, 92, 89, 78, 8]
4、3 sum(列表) - 求列表的所有的元素之和(列表必须是数字列表)
nums=[89,923,78,100,92,8]
print(sum(nums)) # 1290
4、4 list(序列) - 将序列转换成列表(获取序列中所有的元素的创建一个新的列表)
注意:所有的序列都可以转换成列表
print(list('abc')) # ['a', 'b', 'c']
# print(list(12)) # 报错
print(list(range(1,4))) # [1, 2, 3]
print(list('q')) # ['q']
1.已知一个数字列表,求列表中心元素。
nums=[1,2,3,4,5,6]
for x in range(len(nums)):
if (len(nums)+1) % 2 == 0:
print(nums[int((len(nums)+1)/2 -1)])
break
else:
print(nums[int((len(nums)+1)/2 -1)],nums[int((len(nums)+1)/2 )])
2.已知一个数字列表,求所有元素和。
nums=[1,2,3,4,5]
print(sum(nums))
3.已知一个数字列表,输出所有奇数下标元素。
nums=[1,2,3,4,5,6,7]
for x in range(len(nums)):
if x % 2 ==0:
print(x)
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
nums=[1,2,3,4,5,6,7]
for x in range(len(nums)):
if x % 2 ==0:
print(nums[x])
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
nums=[1,3,3,4,5]
for x in range(len(nums)):
nums[x]=nums[x]*2
print(nums)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
nums=[99,97,99,98,87,100]
nums.remove(max(nums))
nums.remove(min(nums))
nums=sum(nums)/len(nums)
print(nums)
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]
A=[1,6,2,3,4,5]
B=[1,6,3,5,7,9]
C=[]
for x in A:
for y in B:
if x in B:
C.append(x)
break
print(C)
9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
10.*获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3