Python数据类型之List列表实例详解
本文实例讲述了Python数据类型之List列表。分享给大家供大家参考,具体如下:
list列表
1.概述:
通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。
若按照之前的方式来解决
age1=10
age2=12
...
age20=12
average=(age1+age2+...+age20)/20
在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,就是使用列表,可以随时添加和删除其中的元素。
本质:list列表的本质是一种有序的集合
2.创建列表
语法:列表名=[元素1,元素2,元素3…说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数
使用:创建列表
#创建空列表 list1=[] #创建带有元素的列表 list2=[10,20,30,10] print(list2) list3=list(range(1,10)) list4=[iforiinrange(10)] print(list3) print(list4)
输出:
[10,20,30,10]
[1,2,3,4,5,6,7,8,9]
[0,1,2,3,4,5,6,7,8,9]
在列表中元素的数据类型可以不同(灵活性)
list3=[33,"good",True,10.32] print(list3)
输出:
[33,'good',True,10.32]
3.列表元素的访问
3.1列表的取值
功能:访问list列表中元素值
语法:列表名[索引]
list4=[22,33,12,32,45] #下标从0开始,最大值为len(list4)-1 print(list4[0])
输出:
22
注意:当索引值大于len(list4)-1的时候,会出现以下错误:
print(list4[5]) IndexError:listindexoutofrange
这个错误就是下标越界【下标超出了可表示的范围】
3.2列表元素的替换
功能:更改列表元素的值
语法:列表名[下标]=值
list4=[22,33,12,32,45] list4[0]="hello" print(list4[0]) print(list4)
输出:
hello
['hello',33,12,32,45]
4.列表操作
4.1列表组合
语法:列表3=列表1+列表2
list1=[1,2,3] list2=['hello','yes','no'] list3=list1+list2 print(list3)
输出:
[1,2,3,'hello','yes','no']
4.2列表重复
语法:列表2=列表1*n
list1=[1,2,3] list2=list1*2 print(list2)
输出:
[1,2,3,1,2,3]
4.3判断元素是否在列表中
语法:元素in列表
若存在则返回True,否则返回False
list1=[1,2,3] print(1inlist1)
输出:
True
4.4列表截取
语法:列表[start:end]表示获取从开始下标到结束下标的所有元素[start,end)
list1=[1,2,3,'hello','yes','no'] print(list1[2:4]) #若不指定start,则默认从0开始截取,截取到指定位置 #若不指定end,则从指定位置开始截取,截取到末尾结束
输出:
[3,'hello']
4.5二维列表
语法:列表=[列表1,列表2,列表3,…,列表n]
#创建二维列表,即列表中的元素还是列表 list1=[[1,2,3],[2,3,4],[5,4,9]]
4.5二维列表取值
语法:列表名[下标1][下标2]
注意:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素
list1=[[1,2,3],[2,3,4],[5,4,9]] print(list1[0][0])
输出:
1
5.列表的方法
5.1list.append(元素/列表)
功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
注意:append()中的值可以是列表也可以是普通元素
>>>list1=[3,4,6] >>>list1.append(6) >>>print(list1) [3,4,6,6]
5.2list.extend(列表)
功能:在列表的末尾一次性追加另外一个列表中的多个值
注意:extend()中的值只能是列表/元组[一个可迭代对象],不能是元素。
>>>list1=[1,2,3] >>>list2=[3,4,5] >>>list1.extend(list2) >>>print(list1) [1,2,3,3,4,5]
5.3list.insert(下标值,元素/列表)
功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延。
注意:插入的数据可以是元素也可以为列表。
>>>list1=[1,2,3] >>>list1.insert(1,0) >>>print(list1) [1,0,2,3] >>>list1.insert(1,[2,4,8]) >>>print(list1) [1,[2,4,8],0,2,3]
5.4list.pop(下标值)
功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据。
>>>list1=[1,[2,4,8],0,2,3] >>>list1.pop() 3 >>>print(list1) [1,[2,4,8],0,2] >>>list1.pop(2) 0 >>>print(list1) [1,[2,4,8],2]
5.5list.remove(元素)
功能:移除列表中的某个元素第一个匹配结果
list1=[1,2,3,2,4] list1.remove(2) print(list1)
输出:
[1,3,2,4]
5.6list.clear()
功能:清除列表中所有的数据
>>>list1=[1,2,3] >>>list1.clear() >>>print(list1) []
5.7list.index(元素[,start][,stop])
功能:从指定的范围的列表中找出某个值第一匹配的索引值
若不指定范围,则默认是整个列表。
>>>list1=[1,2,3] >>>list1.index(2) 1 >>>list1.index(4) Traceback(mostrecentcalllast): File"",line1,in ValueError:4isnotinlist
注意:若在列表中找不到这个元素,则会报错。
5.8list.count(元素)
功能:查看元素在列表中出现的次数
>>>list1=[1,2,3,1] >>>list1.count(1) 2
5.9len(list)
功能:获取元素个数
>>>list1=[1,2,3,1] >>>len(list1) 4
5.10max(list)
语法:获取列表中的最大值,元素是不同的数据类型时不能使用
>>>list1=[1,2,3,1] >>>max(list1) 3
5.11min(list)
语法:获取列表中的最小值,元素是不同的数据类型时不能使用
>>>list1=[1,2,3,1] >>>min(list1)
5.12list.reverse()
语法:列表倒叙,直接修改原列表,返回值为None。
>>>list1=[1,2,3,1] >>>list1.reverse() >>>print(list1) [1,3,2,1]
5.13list.sort()
语法:列表排序默认升序,元素是不同的数据类型时不能使用
>>>list1=[1,2,3,1] >>>list1.sort() >>>print(list1) [1,1,2,3]
#倒序 list1=[1,2,3,2,4] list1.sort(reverse=False) print(list1)
输出:
[1,2,2,3,4]
5.14浅拷贝
语法:
list1=[1,2,3] list2=list1
>>>list1=[1,2,3,1] >>>list2=list1 >>>print(list2) [1,2,3,1] >>>print(id(list1)) 4314476424 >>>print(id(list2)) 4314476424
list1=[1,2,3,2,4] list2=list1 list2[0]=0 print(list1)
输出:
[0,2,3,2,4]
注意:浅拷贝为引用拷贝,类似于快捷方式。
浅拷贝中一个变量发生改变,另一个也相应发生改变,
5.15深拷贝
语法:
list1=[1,2,3] list2=list1.copy()
方式2:
list2=list1[:] >>>list1=[1,2,3,1] >>>list2=list1.copy() >>>print(list2) [1,2,3,1] >>>print(id(list2)) 4314525320 >>>print(id(list1)) 4314524808
list1=[1,2,3,2,4] list2=list1[:] print(list2) print(id(list1)) print(id(list2))
输出:
[1,2,3,2,4]
2485711112520
2485710239496
注意:深拷贝为内存拷贝,开辟了新的内存空间
5.16list(元组)
功能:将元组转为列表
>>>list1=list((1,2,3,4)) >>>print(list1) [1,2,3,4]
6.列表的遍历
6.1使用for循环遍历列表
语法:
for变量名in列表:
语句
功能:for循环主要用于遍历列表
遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值
说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止
>>>list1=['hello',78,'你好','good'] >>>foriteminlist1: ...print(item) ... hello 78 你好 good
6.2使用while循环遍历列表[使用下标循环]
语法:
下标=0
while下标<列表的长度:
语句
下标+=1
>>>list1=['hello',78,'你好','good'] >>>index=0 >>>whileindex6.3同时遍历下标与元素
语法:
for下标,变量inenumerate(列表)
语句>>>list1=['hello',78,'你好','good'] >>>forindex,iteminenumerate(list1): ...print(index,item) ... 0hello 178 2你好 3goodenumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj,[start=0])
obj:一个可迭代对象
start:下标起始位置7、List转dict
list1=[('a',1),('b',2),('c',3)] dict1={k:vfork,vinlist1} dict2={v:kfork,vinlist1} print(dict1) print(dict2)输出:
{'a':1,'b':2,'c':3}
{1:'a',2:'b',3:'c'}8、切片
8.1一个冒号
list1=['a','b','c','d','e'] print('获取全部:',list1[:]) print('去头去尾:',list1[1:-1]) print('取[2,4)',list1[2:4])输出:
获取全部:['a','b','c','d','e']
去头去尾:['b','c','d']
取[2,4)['c','d']冒号后面没有值则默认为list1的长度。
8.2两个冒号
冒号后面是步长,切片的步长默认为1,不可为0。
list1=['a','b','c','d','e'] print('获取全部:',list1[::]) print('列表倒置:',list1[::-1]) print('从下标0开始,步长为2',list1[::2]) print('从下标1开始,步长为2',list1[1::2])输出:
获取全部:['a','b','c','d','e']
列表倒置:['e','d','c','b','a']
从下标0开始,步长为2['a','c','e']
从下标1开始,步长为2['b','d']常用的是list1[::-1],列表倒置。
更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。