Python_note_006(Python中的列表,以及列表的增删改查、排序操作)
列表的创建
-
使用中括号(元素之间使用逗号分开)
ls=['zhangsan','lisi',200,15.5]
-
使用内置函数list
ls2=list(['zhangsan','lisi',200,15.5])
列表的特点
-
列表的元素是按顺序排列的
-
索引映射唯一一个数据
-
列表可以存储重复数据
-
任意数据类型混存
-
根据需要动态分配和回收内存
#列表 混存任意数据类型 ls=['zhangsan','lisi',200,15.5] print(id(l)) print(type(l)) print(l) #索引映射唯一一个数据 列表可以存储重复数据 ls2=list(['zhangsan','zhangsan',200,15.5]) print(l2[0],l2[-1])#正向索引0到N,逆向索引-N到-1
列表的查询操作
-
获取列表中指定元素的索引用 .index()
#.index()查询索引 ls3=list(['zhangsan','zhangsan',200,15.5]) #如果列表中有相同元素,只返回相同元素的第一个元素的索引。 #如果查询的元素列表不存在,则报异常ValueError: '***' is not in list print(ls3.index('zhangsan')) #指定索引范围内查找指定的索引 print(ls3.index('zhangsan',1,3))
-
获取列表中的单个元素
#正向索引0到N,逆向索引-N到-1 l4=list(['lisi',123,'wangwu',20.5]) print(l4[2])#查看索引为2的元素 print(l4[-2])#查看索引为-2的元素 #如果查找的索引不存在会报错IndexError: list index out of range
-
获取列表的多个元素
语法格式:列表名[start: stop: step]
#获取列表的多个元素 #---------步长step为正数的情况-------------- ls=[13,25,2131,123,135,431] # start不写,默认是从索引为0开始 如果不写步长step,默认是步长就是1 ls2=ls[1:4:2] print('原列表',id(ls)) print('切的分段',id(ls2)) print(ls2) #---------步长step为负数的情况-------------- ls3=ls[::-1]#输出结果[431, 135, 123, 2131, 25, 13] ls4=ls[5:2:-1]#输出结果[431, 135, 123] print(ls3,ls4)
-
判断指定元素在列表中是否存在
#not in 和 in ls=[13,25,2131,123,135,431] print(13 not in ls) print(13 in ls)
-
列表元素的遍历
ls=[13,25,2131,123,135,431] for n in ls: print(n)
-
列表元素的添加操作
#列表名.append()在列表的末尾添加一个元素 ls=[13,25,2131,123,135,431] print('原列表',ls) ls.append('张三') print('添加后的列表',ls) #列表名.extend()向列表的末尾一次性添加多个元素 ls2=['zhangsan','lisi'] ls.extend(ls2) print(ls) #列表名.insert()在任意位置上添加一个元素 ls.insert(2,'什么') print(ls) #在任意位置添加n个元素(切片) #把切掉的位置用一个新的列表添加进去 ls[1::]=[True,False] print(ls)
-
列表元素的删除操作
#remove()方式,从列表删除一个元素,如果有重复只删除一个 ls.remove(13) #ls.remove(1231223)如果指定的元素不存在,就会报错:ValueError: list.remove(x): x not in list print(ls) #pop()方式,根据索引移除元素 ls.pop(1) #ls.pop(123)如果指定的索引不存在,就会报错:IndexError: pop index out of range print(ls) ls.pop()#如果不指定索引,将删除列表的最后一个 print(ls) #切片方式,删除至少一个元素,将会产生一个新的对象 new_ls=ls[1:3] print('原列表',ls,id(ls)) print('新列表',new_ls,id(new_ls)) #不产生新的列表对象,而是删除原列表的内容 ls[1:2]=[] print(ls,id(ls)) #清除列表中的所有元素 ls.clear() print(ls) #del 列表名,将列表对象删除 del ls #print(ls) NameError: name 'ls' is not defined
-
列表元素的修改操作
#一次修改一个值 ls=[1,2,3,4,5] ls[2]=100 print(ls) #指定切片赋予一个新的值 ls[1:4]=[1000,2000,3000] print(ls)
-
列表元素的排序操作
# 列表的排序操作 arr=[30,123,23,43,61,12] print('排序前的列表:',arr) # 调用列表对象sort方法,升序排序------------------ arr.sort() # 如果进行指定reverse参数为True,则为降序排序; 参数为False就为升序排序 arr.sort(reverse=True) print('排序后的列表:',arr) arr.sort(reverse=False) print('排序后的列表:',arr) # 第二种排序方式-------------------------- # 使用内置函数sorted()对列表进行排序,会产生一个新的列表对象; arr2=[30,123,23,43,61,12] new_arr2=sorted(arr2) print('排序后的列表:',new_arr2) #进行设置参数指定为降序排序; new_arr3=sorted(arr2,reverse=True) print('排序后的列表:',new_arr3)
列表的生成式
-
语法格式
# 列表生成式 arr=[i*i for i in range(1,10)] print(arr)