![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=1739279609-eZWfLVdQhFHCgeKOVjp0Hb5ryfeJR3rj-0-f4c7f9d00c0da6ca6bbe4bcd01c3ee8c)
可以用方括号直接创建元组,括号里的元素用逗号隔开。当[ ]内不存在任何元素时,便创建了一个空列表。
【例4-5】用方括号创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78748.jpg?sign=1739279609-qZldBoNFaUdcfqgsxeazJWzoRhs9Cr5c-0-d97a0e346a920161e78ffc2e4aa5aa9a)
程序运行结果如图4-6所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38169.jpg?sign=1739279609-dC24F1NQzRdddrO1Ad397AB8vZzXWfFN-0-b245eb88138a86eb772a466fe185c7bb)
图4-6 创建列表运行程序
4.3.2 用list()函数创建列表
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38290.jpg?sign=1739279609-U5fDYckksGmD5NX5EBhdNazXEo7Z536F-0-881fc4c4d25e60f25663e034ed8ecb4a)
其实,list()函数实质是把目标对象转为列表的类型。同直接创建列表的方式很像,这里是在list()函数后面用圆括号将目标对象转为列表类型。可以在list的圆括号中放入建立列表需要的元素,这些元素放入时必须是一个元组对象或者是一个列表对象,不可以直接将元素列进list()函数中的括号里,也可以将某一变量放进去,list()函数会帮助我们自动将元素转为列表的形式。同样,如果没有传入任何元素,将创建一个空的列表。
【例4-6】用list()函数创建列表。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_78750.jpg?sign=1739279609-7GGrvT8Q6kSBxn7zbPBcNCIVaVqkUNhn-0-5247a5de3d6100fe98e74a005b5a7f91)
程序运行结果如图4-7所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P64_38277.jpg?sign=1739279609-W5kwYJJuqh3te9ZJ17uwqkGOboeFypgA-0-756a71725577dad325b53e3b9b0ef516)
图4-7 创建列表运行程序
4.3.3 列表元素提取
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38395.jpg?sign=1739279609-As7FCBdwC3DjRkr8Kz5xJWsf4eybpIoZ-0-69742d3bb275720b0ec4e16bd1a92dc7)
列表中的元素都是有位置的,因此常用的元素提取方法有索引提取和列表切片操作提取。每一次通过位置进行索引访问都能得到列表中唯一对应的元素,使用切片操作则会得到一段包含对应元素的列表。
(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=1739279609-9xNcB4VnDxPBZF5W1GGfpMrZopr9lNI7-0-b32037d0ae9eec76e9d4b97fe94b3d60)
程序运行结果如图4-8所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38329.jpg?sign=1739279609-gfixhqp7mxYWVjhgvI1CP8WsWdSA4xKg-0-bcfa1db4dc2529cda709a311eca70d92)
图4-8 索引提取元素运行程序
(2)切片提取元素:使用切片提取列表的某段元素时,无须考虑超出索引范围的问题。需要注意的是,列表的切片是一个元组类型。
【例4-8】切片提取元素。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78752.jpg?sign=1739279609-uzB8EihBUhf8zMFvkLcJ0zmPNjqlxzoY-0-deb72357e2a8742635d1a41e319da981)
程序运行结果如图4-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38358.jpg?sign=1739279609-9Cs6mDMEbCq299xQjcgDkF5PlZ07hDOm-0-51ac3b2f4e0740e07419b0124e04cb26)
图4-9 切片提取元素运行程序
(3)列表反转:使用切片时,list[::-1]这个操作可以得到list列表的反转列表。
【例4-9】列表反转。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_78753.jpg?sign=1739279609-Fl54WgGLJqV5MdWGOnsyQ6CodsXEpkAX-0-92e65ef29c5958d5c710a97ae37dc10e)
程序运行结果如图4-10所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38386.jpg?sign=1739279609-OB7vJnKVpTtukhEWyYcwKx8JFaOYEMZq-0-4a1485bf07431cd0f5eb2ec0de7ddf59)
图4-10 列表反转运行程序
4.3.4 操作列表的常用函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P65_38401.jpg?sign=1739279609-so07vI9N3BLdusjrrXRVe3RCgy1C0AzT-0-8ab05bf722432d0b9cd5fb1ce433f018)
列表在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=1739279609-0Eu0qsqIgQCdxwBUsQ8CMVmGUxkFkasW-0-6e3fdd384076565316919f1d330b264e)
程序运行结果如图4-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38459.jpg?sign=1739279609-q25LAVuPmvKI8WR1ba4nA5Vp35fxOkZp-0-8c43a3d034cc297505de23e18951f727)
图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=1739279609-c5yslj1qnJ5ZjXw5gFqQceXZms2L6ozV-0-701aacd7489200c9fe9360da949616ac)
程序运行结果如图4-12所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P66_38506.jpg?sign=1739279609-Q7LbB4TlrOEBxgRG8J0GHJbwHMncqtvK-0-c84c06e6cb179d3736e1bd2a484a16c9)
图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=1739279609-5BzbZmmaHHfrVDI8qwVYKNUSWeLpsdo5-0-138c57d86e47c000ac5c990a27abb37f)
程序运行结果如图4-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38534.jpg?sign=1739279609-bTR2sBbfbiel25IpoztFwWssII3QtvRQ-0-40f5cee82583958e5312bdda0a08a470)
图4-13 copy方法运行程序
5. index查询
index能够帮助我们快速查找某元素在该列表中的位置。
【例4-13】index查询。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_78759.jpg?sign=1739279609-0t3OfwvjwaKkE8J856p4U3wu69pGOCZH-0-aa1727631247f22a105463170c02d256)
程序运行结果如图4-14所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P67_38550.jpg?sign=1739279609-iGBF4JGzbILnPDDx5LOeY7s4XqUyPJzv-0-7576ba1a682ffb86c822023d65882fa2)
图4-14 index查询运行程序