![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=1738865799-1s66WoV9XtUDsBxueeq6JC5wQzCvxH49-0-e5eca33bbd01849b570b6fbab57b7300)
可以用方括号直接创建元组,括号里的元素用逗号隔开。当[ ]内不存在任何元素时,便创建了一个空列表。
【例4-5】用方括号创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78748.jpg?sign=1738865799-qYZy3s5WJ98v4j9zZkRkPIvaikRBUsG0-0-158467d5f9ea1750919a1fac7c545448)
程序运行结果如图4-6所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38169.jpg?sign=1738865799-MIBIpB6OGCoQlqpctmjkXUA9WMqKezmj-0-7830aea5596396dd0de1e0fdbd8ac25f)
图4-6 创建列表运行程序
4.3.2 用list()函数创建列表
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38290.jpg?sign=1738865799-oZTrtjxImlYLxbLjy0wGroDz7FjXhe7r-0-873a078f78ae87628f2b415cf8dcf1b6)
其实,list()函数实质是把目标对象转为列表的类型。同直接创建列表的方式很像,这里是在list()函数后面用圆括号将目标对象转为列表类型。可以在list的圆括号中放入建立列表需要的元素,这些元素放入时必须是一个元组对象或者是一个列表对象,不可以直接将元素列进list()函数中的括号里,也可以将某一变量放进去,list()函数会帮助我们自动将元素转为列表的形式。同样,如果没有传入任何元素,将创建一个空的列表。
【例4-6】用list()函数创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78750.jpg?sign=1738865799-yZVeavdugf8YMwP2lH5Gb9QeXFTEFkbU-0-4509d37dc738c94d2520dfb9778abace)
程序运行结果如图4-7所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38277.jpg?sign=1738865799-FFmHtsAPUbK7n9y5WddQCQNn1ugKP3GM-0-28138d827498472ba5eec7b3b4982cba)
图4-7 创建列表运行程序
4.3.3 列表元素提取
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38395.jpg?sign=1738865799-2F544uVLWdUYOHAn1cJRDUtPF0q63n5c-0-45d79e181bef346c5f8bf179020c9c0d)
列表中的元素都是有位置的,因此常用的元素提取方法有索引提取和列表切片操作提取。每一次通过位置进行索引访问都能得到列表中唯一对应的元素,使用切片操作则会得到一段包含对应元素的列表。
(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=1738865799-wEj41IJJPc7OmKaX5GM7d4tU4r0xDX0s-0-60b544841b4b25892185a5f6542027e7)
程序运行结果如图4-8所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38329.jpg?sign=1738865799-29e54PQBQtJkF4EAsKpHGkzBUICex18O-0-1203c1d0424704f608b7483f56b53547)
图4-8 索引提取元素运行程序
(2)切片提取元素:使用切片提取列表的某段元素时,无须考虑超出索引范围的问题。需要注意的是,列表的切片是一个元组类型。
【例4-8】切片提取元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78752.jpg?sign=1738865799-u0qC8PCWskV8WqBTjRCTymmgebBTLtJ7-0-3ebc84bdc7d898c6ac9d31cf4dabe791)
程序运行结果如图4-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38358.jpg?sign=1738865799-Sv8TQte8jPOSU6CALzEaz8omyl7S4Evz-0-9310ee0877395a3ff2d0b5f94daab680)
图4-9 切片提取元素运行程序
(3)列表反转:使用切片时,list[::-1]这个操作可以得到list列表的反转列表。
【例4-9】列表反转。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78753.jpg?sign=1738865799-wdyf31AFvMTRxwxg1hxbESmoIAcyLblC-0-1df6a6421f0a127a5565085e40eb71b2)
程序运行结果如图4-10所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38386.jpg?sign=1738865799-WtDBIPk04GDhC31E8gDsLDV4HAZj5OSs-0-806b1a0d9fe8a1271ce6ee4dc4dd4b7b)
图4-10 列表反转运行程序
4.3.4 操作列表的常用函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38401.jpg?sign=1738865799-vEtus5j7etV1siK52ZhPUxGCR4sL40pl-0-a1bd9ca1100698e5f6f1b9ef2a8fb6cd)
列表在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=1738865799-91fH8aYfR1uIa3tR2oBuG1337IQRPOun-0-ba6143f5ca5a0b48fe348276e0cb057f)
程序运行结果如图4-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38459.jpg?sign=1738865799-X2yHGAkz5zGsvNuPUZsQqANtqUTeQDB1-0-222055c368068319a1e86d95f2f1d923)
图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=1738865799-uo0Jh4WM38VtTVDCYe1KbHskLIiz1w7h-0-fa3854d8ac2b49aa0ba1a1aa66e5d414)
程序运行结果如图4-12所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38506.jpg?sign=1738865799-b4e8i6NLsEV34rVwQlhUrxwjqbx68mMu-0-a9270a3ac9991f18752b12cdf73de749)
图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=1738865799-IqRRhqydJiMUBtqCTPsojwkYWkb4cIMk-0-8d73e19a7b8c76b0e675c334f39dd9a0)
程序运行结果如图4-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38534.jpg?sign=1738865799-ONiGeKqWJbJxUJ7FxqzcNsmAASplqOEr-0-ed6ebfe137ffc0e1c2f487b5f2fe43da)
图4-13 copy方法运行程序
5. index查询
index能够帮助我们快速查找某元素在该列表中的位置。
【例4-13】index查询。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_78759.jpg?sign=1738865799-RoMgtgDfW406KfhaCeiJ0BDRSAag1Rnu-0-94f491c319f5c66f1e10e9c01f9c3381)
程序运行结果如图4-14所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38550.jpg?sign=1738865799-Z3tXichjAD9MFAVRPcVwOUBcaQREEzM2-0-add41d99afc56b4e523de972b599d13a)
图4-14 index查询运行程序