第七讲:列表
列表
说明:列表用方括号[]表示,元素之间用,隔开,类型容器,内容可改变。List可以放数字,字符串,元组,字典,列表,类,内建函数等
1、创建列表:
list1=[]
list2=[1,2,'234',[2,3,4]]
2、(查)访问获取列表元素:索引方式获得,列表索引从0开始:
list2=[1,2,'234',[2,3,4]] print (list2[2]) print (list2[3][2])
print (list2[2:4]) #列表切片,获取从索引2到索引3位置元素
运行结果:
234
4
['234', [2, 3, 4]]
3、(改)改列表元素:给列表元素重新赋值
list2=[1,2,'234',[2,3,4]] list2[3]=[5,6,7] print (list2) 运行结果: [1, 2, '234', [5, 6, 7]]
4、(增)增加列表元素:用append()和insert()方法:
append()与insert()的区别:
append(元素):末尾添加元素,对原列表有变化
insert(位置i,元素x):在两个元素之间添加元素
list2=[1,2,'234',[2,3,4]] list2.append('ABC') print (list2)
list2.insert(3,'hello insert')
print (list2)
运行结果:
[1, 2, '234', [2, 3, 4], 'ABC']
[1, 2, '234', 'hello insert', [2, 3, 4]]
5、(删)用del删除列表或列表的元素;用remove() 移除列表的元素;用pop() 通过元素下标删除元素
del、remove、pop的区别:
remove是对列表的元素进行检索删除;返回是删除的列表,不是删除的元素,返回值None;
del和pop是对列表的元素的下标进行检索删除;del不返回删除值;pop返回删除值
list1=[1,2,'234',[2,3,4]] list1.remove('234') #remove()对元素进行检索 print ("list1.remove('234')=",list1) list1.pop(2) #pop()对元素的下标进行检索
print ('list1.pop(2)=',list1) del list1[0] print ('del list1[0]=',list1) #del对元素的下标进行检索,删除会快点
运行结果:
list1.remove('234')= [1, 2, [2, 3, 4]]
list1.pop(2)= [1, 2]
del list1[0]= [2]
6、列表的运算符:
7、列表的切片截取:
L = ['spam', 'Spam', 'SPAM!'] #获取列表第三个元素: print (L[2]) #读取列表中倒数第二个元素: print (L[-2]) #从列表的第二个元素开始截取列表: print (L[1:])
print (L[:])
运行结果:
SPAM!
Spam
['Spam', 'SPAM!']
['spam', 'Spam', 'SPAM!']
8、列表复制:传值和传引用:
说明:引用(变量a=变量b)指的是操作的同一个对象,复制([:]模式)指完全复制一个新的对象
L1= ['spam', 'Spam', 'SPAM!'] L2= L1 #传地址 L3= L1[:] #传值 print (L2 is L1) #True print (L3 is L1) #False
注意:列表的比较用is,不要用in ,in是比较元素
9、列表函数与方法:
以下函数对所有序列都有用(序列:字符串、列表、 元组)(备注pyhton3移除了cmp的函数)
以下函数仅对列表生效
10、operator运算符模块:
python3已废弃cmp()函数,所以用新函数(eq、lt、le、gt、ge)替换
import operator #导入运算符模块 a=4 b=9 print (operator.eq(a,b)) #等于 print (operator.lt(a,b)) #小于 print (operator.le(a,b)) #小于等于 print (operator.gt(a,b)) #大于
print (operator.ge(a,b)) #大于等于
运行结果:
False
True
True
False
False
11、sort()函数:
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
语法:
list.sort(key=None,reverse=False)
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
该方法没有返回值,但是对列表的对象进行排序
list1=[(2,3,3),(4,4,5,3,3),(4,5)] #使用默认参数进行排序,即按元组的第一个元素来排序 list1.sort() print (list1) #按下标为1,即第2个元素,倒序排序 list1.sort(key=lambda x:x[1],reverse=True) print (list1) #先按下标为0,即第1个元素排序,如果第1个元素相同,则按下标为1,即第2个元素排倒序排序 list1.sort(key=lambda x:(x[0],x[1]),reverse=True) print (list1) #按元组的长度排序 list1.sort(key=lambda tup:len(tup)) print (list1)
运行结果:
[(2, 3, 3), (4, 4, 5, 3, 3), (4, 5)]
[(4, 5), (4, 4, 5, 3, 3), (2, 3, 3)]
[(4, 5), (4, 4, 5, 3, 3), (2, 3, 3)]
[(4, 5), (2, 3, 3), (4, 4, 5, 3, 3)]
注意:笔者从此篇开始用的是python3.7,此前是python2.7。后续会继续更新,有任何问题欢迎留言交流