目录
列表
列表对象的创建
列表的查询操作
获取列表中指定元素的索引
获取列表中的单个元素
获取列表中的多个元素-切片操作
判断指定元素在列表中是否存在
列表元素的遍历
列表元素的增、删、改操作
列表元素的增加操作
编辑
列表元素的删除操作
列表元素的修改操作
列表元素的排序操作
1、变量可以存储一个元素,而列表是一个“大容器”可以存储N个元素,程序可以方便地对这些数据进行整体操作,列表本身是可迭代对象
2、列表相当于其他语言的数组
3、列表示意图
a=10 #变量存储的是一个对象的引用
lst=['hello','world',98]
print(id(lst))#标识
print(type(lst))#数据类型
print(lst)#值
1、使用方括号:lst = [ 'hello' , 'world' ]
列表对象名 赋值号 中括号 元素 英文逗号 元素 中括号
2、使用内置函数list():lst2=list(['hello','world',])
lst1=['hello','world']
lst2=list(['helo','world'])
3、列表的特点
列表元素按顺序有序排序(从0开始)或按逆序排序(从-1开始),索引映射唯一一个数据
lst2=list(['helo','world'])
print(lst2[0],lst2[-2]) #结果为hello hello
lst=['hello','world',98,'hello']
print(lst.index('hello')) #有相同元素只返回第一个的索引,结果为0
#print(lst.index('Python'))#ValueError: 'Python' is not in list
#print(lst.index('hello',1,3))#在索引1到3(不包括3)内找元素hello #ValueError: 'hello' is not in list
print(lst.index('hello',1,4))#在索引1到4(不包括4)内找元素hello,结果为3
lst=['hello','world',98,'hello']
#获取索引为2的元素
print(lst[2])
#获取索引为-2的元素
print(lst[-2])
#获取索引为10的元素
#print(lst[10])#IndexError: list index out of range
切片可以创建一个新的列表
lst3=[10,20,30,40,50,60,70,80]
#start=1,stop=6,step
print(lst3[1:6:1])#从索引为1开始到6结束(不包括6)
print(lst3[1:6])#默认步长为1
print(lst3[1:6:])
print(lst3[1:6:2])#步长为2
lst4=lst3[1:6:1]#切出一个新的列表
print('原列表',id(lst3))
print('新列表',id(lst4))
#stop=6,step=2,start默认为第0个元素
print(lst3[:6:2])
#start=1,step=2,stop默认为最后一个元素
print(lst3[1::2])
#步长为负数
print(lst3[::-1])#倒序输出
#star=7
print(lst3[7::-1])
#star=6,stop=0,step=-1
print(lst3[6:0:-2])#从索引为6开始到0结束(不包括0),步长为2
元素 in 列表名
元素 not in 列表名
lst3=[10,20,30,40,50,60,70,80]
print(10 in lst3)#Ture
print(10 not in lst3)#False
for 迭代变量 in 列表名 :
操作
lst3=[10,20,30,40,50,60,70,80]
for item in lst3:
print(item,end='\t')
#append
lst=[10,20,30]
print('添加元素之前',lst,id(lst))
lst.append(100)
print('添加元素之后',lst,id(lst))#id没变,说明没有创建一个新的列表
#extend、insert
lst=[10,20,30]
lst2=['hello','world']
lst.append(lst2)#将lst2作为一个元素加到列表的末尾
print(lst)
lst.extend(lst2)#将lst2中各个元素加到列表末尾
print(lst)
lst.insert(1,90)#在任意位置添加一个元素 在索引为1处添加元素90
print(lst)
#切片:切掉,在任意位置用N个元素替换原来的元素,没有创建新列表
print(id(lst))
lst3=[True,False,'hello']
lst[1:]=lst3#从1开始(stop默认,step默认)将lst3中的元素替换到lst中
print(lst,id(lst))
#remove
lst=[10,20,30,40,50,60,30]
lst.remove(30)#从列表中移除一个元素,若有重复元素则只移除第一个元素
print(lst)
#lst.remove(100)#ValueError: list.remove(x): x not in list
#pop
lst.pop(1)#移除索引为1的元素
print(lst)
#lst.pop(5)#IndexError: pop index out of range
lst.pop()#默认删最后一个元素
print(lst)
#切片:截取,创建一个新列表
print(lst,id(lst))
lst1=lst[1:4]#截取索引从1开始从4(不包括4)的元素,组成一个新列表
print(lst1,id(lst1))
#切片:删除,不创建新列表
lst[1:4]=[]#将原列表中索引从1开始从4(不包括4)的元素删除
print(lst)
#clear:清除列表中的所有元素
lst.clear()
print(lst)
#del:将列表删除
del lst
#print(lst)#NameError: name 'lst' is not defined
1、为指定索引的元素赋予一个新值
2、为指定的切片赋予一个新值
#修改
lst2=[10,20,30,40]
#一次修改一个值
lst2[2]=100
print(lst2)
#切片,一次修改多个值
lst2[1:3]=[300,400,500,600]#索引从1到3(不包括3)的元素改为300,400,500,600
print(lst2)
方法:
1、调用sort()方法:列表中所有的元素默认按照从小到大排,可以指定reverse=Ture,进行降序排序,不产生新列表
2、调用内置函数sorted(),可以指定reverse=Ture,进行降序排列,原列表不发生改变,产生新列表
#排序
#sort()
lst3=[20,40,10,98,54]
print('排序前',lst3,id(lst3))
lst3.sort()#调用sort()方法,默认升序排列
print('排序后',lst3,id(lst3)) #id没变,没有创建新列表
lst3.sort(reverse=True)#降序排列
print('排序后',lst3)
lst3.sort(reverse=False)#升序排列
print('排序后',lst3)
#sorted()
lst3=[20,40,10,98,54]
print('原列表',lst3,id(lst3))
lst4=sorted(lst3)#默认升序
print('新列表',lst4,id(lst4))
lst5=sorted(lst3,reverse=True)#降序
print('新列表',lst5,id(lst5))
即生成列表的公式
语法结构:
注意:“表示列表元素的表达式”中通常包含自定义变量
lst6=[i for i in range(1,10)]
print(lst6)
lst7=[i*i for i in range(1,10)]
print(lst7)
lst8=[2*i for i in range(1,6)]
print(lst8)