![Python从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/265/27563265/b_27563265.jpg)
4.3 列表
列表是元素按顺序排列构成的有序的集合,其中的每个元素都有各自的位置编号,方便索引操作。列表非常好的优势是,里面的元素可以是各种类型共存的,可以是数字、字符串甚至还可以是列表、元组、字典等。列表中的元素是可以被修改的。
4.3.1 直接创建列表
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38284.jpg?sign=1739281133-bk5PkH44CiODbIRyE36huvBM4mTIYAs6-0-da133727d6a585a011bfa79717c48409)
可以用方括号直接创建元组,括号里的元素用逗号隔开。当[ ]内不存在任何元素时,便创建了一个空列表。
【例4-5】用方括号创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78748.jpg?sign=1739281133-tew5dO5i7YEAAj42FTXdJxnvOG4geppq-0-69b914366223027282963083babc7194)
程序运行结果如图4-6所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38169.jpg?sign=1739281133-ZOzOeKzhCXt40jRd1JrpGU4i5zXX69au-0-965f08a0c554816d31d437874ed8c4a2)
图4-6 创建列表运行程序
4.3.2 用list()函数创建列表
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38290.jpg?sign=1739281133-OLcOkIEW6D88wuJAO3cE7nl5GvmbDYJv-0-3d232c84c56f3b5910938791d3d2e0a6)
其实,list()函数实质是把目标对象转为列表的类型。同直接创建列表的方式很像,这里是在list()函数后面用圆括号将目标对象转为列表类型。可以在list的圆括号中放入建立列表需要的元素,这些元素放入时必须是一个元组对象或者是一个列表对象,不可以直接将元素列进list()函数中的括号里,也可以将某一变量放进去,list()函数会帮助我们自动将元素转为列表的形式。同样,如果没有传入任何元素,将创建一个空的列表。
【例4-6】用list()函数创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78750.jpg?sign=1739281133-qwaDVbFrIHjgaUvy3wjtzIpM2Uu1FWic-0-e8afdb1957f20c345dcd6a2321f14c14)
程序运行结果如图4-7所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38277.jpg?sign=1739281133-xSSMg4x9Xmxx1Xu9AfNlhi2Fen6Ir2I5-0-0b1f6e6b72d5a7a1c8fb0f363a60bbda)
图4-7 创建列表运行程序
4.3.3 列表元素提取
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38395.jpg?sign=1739281133-eT42XpnuE9v62D7GrDeGWXuoxte8hLi6-0-bfd2f939fc8209827e52a84db6b9b857)
列表中的元素都是有位置的,因此常用的元素提取方法有索引提取和列表切片操作提取。每一次通过位置进行索引访问都能得到列表中唯一对应的元素,使用切片操作则会得到一段包含对应元素的列表。
(1)索引提取元素:利用序列的索引进行元素提取的方法。通过元素的位置,提取元素,在列表对象后面使用方括号包含索引数。例如,list[0],list[1],list[2],…注意不能超过列表总长度。
如果想要从列表尾部快速索引元素,则可以使用负数,例如:list[-1],list[-2],list[-3],…
【例4-7】索引提取元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78751.jpg?sign=1739281133-niEzdQWucKomtLgTsRyTC0z3ur70M8es-0-46b8c917e479be05e10a8e0bd74bec3b)
程序运行结果如图4-8所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38329.jpg?sign=1739281133-gCAphhYk1As5pF5aHTFRxSEtiWSLr4oG-0-501be9a945e7c8869d03354d323b9c22)
图4-8 索引提取元素运行程序
(2)切片提取元素:使用切片提取列表的某段元素时,无须考虑超出索引范围的问题。需要注意的是,列表的切片是一个元组类型。
【例4-8】切片提取元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78752.jpg?sign=1739281133-PyO9Cgi9Kgsm64f094HtsSVm6xvDXE2V-0-cf2ed1c859abaa8fe412cadababba66e)
程序运行结果如图4-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38358.jpg?sign=1739281133-IN0tbEaGKt8uNweegCQOrS4wmdwozLDJ-0-88d02340bd6faba9956cbaeadfacbd0f)
图4-9 切片提取元素运行程序
(3)列表反转:使用切片时,list[::-1]这个操作可以得到list列表的反转列表。
【例4-9】列表反转。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78753.jpg?sign=1739281133-kIkkRZVOQ25f3f4V8oeu0kbtTLVMayV9-0-14e81ba0c9601ebe2d4ac5d269208dae)
程序运行结果如图4-10所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38386.jpg?sign=1739281133-XvPfliYHvjkty9yne045rjuJJIDGbZqp-0-24e9edc1f7fc8e27c40642cc9a7dd361)
图4-10 列表反转运行程序
4.3.4 操作列表的常用函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38401.jpg?sign=1739281133-zoTFWIFQVBJt5ttCDQlg0TitDpD8PqYA-0-b83882873031cb008a9ea9d9f451817b)
列表在Python中是可变的数据结构,因此Python提供很多方便的函数帮助用户对列表的元素进行操作,常见的操作有元素的增删改查等。
1. 增添元素
append()函数将在列表尾部传入一个元素:list.append(1)。
extend()函数可以将列表1和列表2拼接在一起:list1.extend(list2)。
insert()函数可以在列表中的指定位置插入一个元素:list.insert(位置,元素)。
注意:使用append()和insert()时,一次只能添加一个元素;使用extend()时是将列表拼接在另一个列表尾部。
【例4-10】添加元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_78755.jpg?sign=1739281133-Sl45Yw54un9DvnIE9eWmahNPG0dioQHW-0-aab723da3b35687e5552a5c6db1e3639)
程序运行结果如图4-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38459.jpg?sign=1739281133-8DL3K1TXiEAWh3eCqZyG01sIZ8eaT2B9-0-d90e335775d94ebd4313956dbdf8a380)
图4-11 添加元素运行程序
2. 删除元素
del()函数将列表中提取出的元素删除(用索引提取):del list[0]。
pop()函数根据索引获取该元素并删除:list.pop(0)。
remove()函数将指定元素删除:list.remove(1)。
注意:使用pop()函数时,若不指定元素位置,将默认使用索引-1;remove()删除指定元素时,只会将第一次出现的该元素删除。
【例4-11】删除元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_78756.jpg?sign=1739281133-qlqYprr3WdYcZxVk9nSztvy6y5jp49Eg-0-e6d80aa6b167a20bde21f63304a4e09c)
程序运行结果如图4-12所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38506.jpg?sign=1739281133-MDsG3zLLQWA1Qx6cSj7H1xzJ8GLUwabk-0-49c3bd2dbbeae93edbb7cb486a7c43ed)
图4-12 删除元素运行程序
3. 修改元素
根据列表元素可变的特性,可以直接提取元素并进行重新赋值,从而完成修改元素的操作。提取元素根据元素地址索引进行。
4. copy方法
有时需要在保存原来的列表数据的同时对这个列表进行变更操作,此时会用到copy方法。copy方法能够创建一个完全一样的列表,虽然意思上是一样的列表,但只是元素一样,copy后的一个列表已经是一个新的列表。
【例4-12】copy方法。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_78758.jpg?sign=1739281133-qKiw2LMAuOPsIxMEQ98r13EAwqmQWz84-0-fbdc757fe105b7560fc7be4abc82f0cf)
程序运行结果如图4-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38534.jpg?sign=1739281133-f1FfHZnPh3IIY2b2ngJcerygzTfHuVmC-0-abcae4f6488332bd8796651f478a9322)
图4-13 copy方法运行程序
5. index查询
index能够帮助我们快速查找某元素在该列表中的位置。
【例4-13】index查询。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_78759.jpg?sign=1739281133-AF0xKBVwOMVaQuUISbyiEdsknwf8Bein-0-2c452702245ed1190351a78749598aa8)
程序运行结果如图4-14所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38550.jpg?sign=1739281133-6tLgKXLfrsEgoMVvV34tDPyU4bXcfmVD-0-2351d81ba2ddf16fc1441bf18bcb1717)
图4-14 index查询运行程序