目录
列表操作
增加
修改
删除
统计
排序
小结
for遍历列表
拆包
列表推导式
列表中不同数据类型处理
公共方法
统计
成员运算符
小结
在python中,所有的非数字型变量都支持以下特点:
- 都是一个序列
- 通过 变量名[索引] 的方式取值
- 通过 for in 遍历
- 可以计算长度、最大和最小值
List列表是python中使用最频繁的数据类型,在其他语言中通常叫做数组(arr),用于存储一串信息。
- 列表用[]定义,列表中的数据之间使用,分隔
- 列表的索引从0开始;索引就是数据在列表中的位置编号,也可以称为下标
- 使用 列表名[索引] 的方式访问指定的成员
- 第一个成员的的索引编号是0
- 不能访问不存在的索引编号(会报错)
- 空列表:list2 = [],即列表中没有元素,不能访问空列表中的数据
列表的定义:
list1 = ['肖战','魏无羡','时影','肖春生','顾魏','顾一野','盛阳']
#list1是列表变量名
列表数据访问:
print(list1[0])#返回第1个成员:肖战
print(list1[1])#返回第2个成员:魏无羡
print(list1[2])#返回第3个成员:时影
print(list1[3])#返回第4个成员:肖春生
print(list1[4])#返回第5个成员:顾魏
print(list1[5])#返回第6个成员:顾一野
print(list1[6])#返回第7个成员:盛阳
查看列表中所有的方法:
print(dir(list))'''
输出结果:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
'''
列表操作
增加
列表.insert(索引,值),在列表中指定位置插入指定值,语法:
list1 = ['肖战','魏无羡','时影']
list1.insert(1,"肖春生")#把肖春生插入到第2个位置
print(list1)#输出['肖战', '肖春生', '魏无羡', '时影']
列表.append(值), 在列表最后插入指定值,语法:
list1 = ['肖战','魏无羡','时影']
list1.append("肖春生")#在列表的最后插入肖春生
print(list1)#输出['肖战', '魏无羡', '时影','肖春生']
列表1.extend(列表2),把列表2的成员追加到列表1的后面,语法:
list1 = ['肖战','魏无羡','时影']
list2 = ['盛阳','顾魏','顾一野']
list1.extend(list2)#把list2的成员追加到list1的最后
print(list1)#输出['肖战', '魏无羡', '时影','盛阳','顾魏','顾一野']
修改
列表名[索引] = 值,修改索引指定位置的值
list1 = ['肖战','魏无羡','时影']
list1[1] = '顾魏'#修改第2个成员的值为顾魏
print(list1)#输出['肖战', '顾魏', '时影']
删除
del(列表名[索引]),删除索引指定位置的值
list1 = ['肖战','魏无羡','时影']
del(list1[2])#删除第3个成员的值
print(list1)#输出['肖战', '魏无羡']
列表.remove(),删除指定值
list1 = ['肖战','魏无羡','时影']
list1.remove('魏无羡')#删除魏无羡
print(list1)#输出['肖战', '时影']
列表.pop(),删除列表中最后一个成员
list1 = ['肖战','魏无羡','时影']
list1.pop()#删除最后一个成员
print(list1)#输出['肖战', '时影']
列表.pop(索引),删除索引指定位置的值(同del)
list1 = ['肖战','魏无羡','时影']
list1.pop(0)#删除第1个成员的值
print(list1)#输出['魏无羡', '时影']
列表.clear(),清空列表
list1 = ['肖战','魏无羡','时影']
list1.clear()#清空列表
print(list1)#输出[]
统计
列表.count(值),统计指定值在列表中的数量,若没有,返回0
list1 = ['肖战','魏无羡','肖战']
print(list1.count("肖战"))#输出肖战出现的次数:2
列表.index(值),返回指定值在列表中从0开始第一次出现的位置
列表.index(值,索引) 返回指定值在列表中从指定索引开始第一次出现的位置
指定的值必须存在,否则报错
list1 = ['肖战','魏无羡','肖战']
print(list1.index("肖战"))#输出肖战在列表中从0开始第一次出现的位置:0
print(list1.index("肖战",1))#输出肖战在列表中从1开始第一次出现的位置:2
排序
列表.sort(),对列表进行升序排列
列表.sort(reverse=True),对列表进行降序排列
list1 = [3,567,23,4,8]
list1.sort()#对列表从小到大排序
print(list1)#返回[3, 4, 8, 23, 567]
list1.sort(reverse=True)#对列表从大到小排序
print(list1)#返回[567, 23, 8, 4, 3]
列表.reverse() ,逆置,对列表倒序排列
list1 = [3,567,23,4,8]
list1.reverse()#对列表倒序排列
print(list1)#输出[8, 4, 23, 567, 3]
小结
分类 | 语法 | 说明 |
增加 | 列表.insert(索引,值) | 在列表中指定位置插入指定值 |
列表.append(值) | 在列表最后插入指定值 | |
列表1.extend(列表2) | 把列表2的成员追加到列表1后面 | |
修改 | 列表名[索引] = 值 | 修改索引指定位置的值 |
删除 | del(列表名[索引]) | 删除索引指定位置的值 |
列表.remove() | 删除指定值 | |
列表.pop() | 删除列表中最后一个成员 | |
列表.pop(索引) | 删除索引指定位置的值(同del) | |
列表.clear() | 清空列表 | |
统计 | 列表.count(值) | 统计指定值在列表中的数量;若没有,返回0 |
列表.index(值) | 返回指定值在列表中从0开始第一次出现的位置 | |
列表.index(值,索引) | 返回指定值在列表中从指定索引开始第一次出现的位置 | |
排序 | 列表.sort() | 对列表进行升序排列 |
列表.sort(reverse=True) | 对列表进行降序排列 | |
列表.reverse() | 逆置,对列表倒序排列 |
for遍历列表
for 变量名 in 列表:代码
'''
列表中有多少成员,for就会循环多少次
变量名代表for每次循环的时候,得到的列表成员的值
'''
拆包
变量1,变量2,变量3,,,变量n = 列表变量
等号左边的变量数量要和等号邮编的列表中成员数量一致
list1 = ['肖战','肖春生','顾魏']
a,b,c = list1
print(a,b,c)
列表推导式
用于快速生成列表(数量庞大时),语法;
列表变量名 = [x for x in range(开始值,结束值,步长)]——左闭右开根据步长推导
列表变量名 = [x for x in range(开始值,结束值,步长) if 条件]——符合条件的才推导出
list1 = [x for x in range(0,10)]
print(list1)#输出[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list2 = [x for x in range(5,20,3)]
print(list2)#输出[5, 8, 11, 14, 17]
list3 = [x for x in range(30,5,-5)]
print(list3)#输出[30, 25, 20, 15, 10]
list4 = [x for x in range(30,5,-5) if x != 10]
print(list4)#输出[30, 25, 20, 15]
例:用列表推导式,创建一个列表,内容为[0,10,20,30,40,50,60,70,80,90,100]
list5 = [x for x in range(0,101,10)]
print(list5)
列表中不同数据类型处理
当列表中成员数据类型不一致,但需要再for中通过统一调代码处理所有数据,需要将所有数据转化为同一个类型。
例1:输出列表的每个值,统一转换
list1 = ['肖战',32,183.6,"演员"]
a = 1
for n in list1:print("列表第%d个成员的值是%s" % (a,str(n)))#所有值转换为字符串a += 1
'''
输出:
列表第1个成员的值是肖战
列表第2个成员的值是32
列表第3个成员的值是183.6
列表第4个成员的值是演员
'''
例2:计算下面所有数字的和
list2 = [56,'32',45,'6']
sum = 0
for n in list2:sum += int(n)#所有元素转换为整型后求和
print(sum)#输出139
公共方法
非列表特有,也适用于元组、字典、字符串
统计
len(列表):返回列表中成员的数量
len(字符串):返回字符串中字符的个数
list1 = [4,7,34,67]
print(len(list1))#返回列表中元素的个数:4
list2 = ['肖战','魏无羡','时影']
print(len(list2))#返回列表中成员的个数:3
str = "hi,肖战"
print(len(str))#返回字符串中字符的个数:5
max(列表):返回列表中的最大值
min(列表):返回列表中的最小值
max(字符串)、min(字符串):返回字符串中ASCII码最大、最小的字符
list1 = [54,12,78,123,77]
print(max(list1))#输出123
print(min(list1))#输出12
str = "hixiaozhan"
print(max(str))#输出z(对应ASCII码最大)
print(min(str))#输出a(对应ASCII码最小)
成员运算符
值 in 列表:判断指定值是否在列表/字符串中
值 not in 列表:判断指定值是否不在列表/字符串中
list1 = [4,6,27,1]
if 4 in list1:print("存在")
if 5 not in list1:print("不存在")str = "hi,肖战"
if "肖" in str:print("存在")
小结
分类 | 语法 | 说明 |
统计 | len(列表) | 返回列表中元素的个数 |
max(列表) | 返回列表中最大的数据 | |
min(列表) | 返回列表中最小的数据 | |
成员运算符 | 值 in 列表 | 判断值是否在列表中,存在返回True,不存在返回False |
值 not in 列表 | 判断值是否不在列表中,存在返回False,不存在返回True |
例1:定义一个变量,内容如下["肖战","魏无羡","王一博","蓝湛","金光瑶"],查找列表中是否有金光瑶,如果有将其删除。
list1 = ["肖战","魏无羡","王一博","蓝湛","金光瑶"]
if "金光瑶" in list1:list1.remove("金光瑶")
print(list1)#输出['肖战', '魏无羡', '王一博', '蓝湛']
例2:定义一个列表,内容如下[3,5,67,2,34,12,5,11],计算列表中元素的平均值
list2 = [3,5,67,2,34,12,5,11]
sum = 0#存放元素和
for n in list2:sum += n
print(sum/len(list2))#输出17.375