- Python+Excel办公自动化一本通
- 杨开振
- 1282字
- 2024-10-29 16:54:38
4.3 列表函数
Python中还提供了许多函数用来增强列表的功能,如表4-1所示。
表4-1 列表函数
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/088-2.jpg?sign=1739045694-QIe6mmDOZV1MwV1ax0Z7ASeL68UBYBVo-0-ce79742d3f9a71f16254e25a16c9a9cb)
表4-1中的函数有些比较常见,有些用于排序操作(加粗标识的部分)。下面介绍常见函数和排序函数。
4.3.1 常见函数
下面通过代码清单4-10介绍列表中常见函数的使用。
代码清单4-10:列表中常见函数的使用
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/088-3.jpg?sign=1739045694-516aNJQ5Atf6cvExFzMg7UnyvtJWXav4-0-29b87b6e6858f6dfb712e3342a9c9615)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/089-1.jpg?sign=1739045694-h2gIkvR3C8jsGIjzlkAGcBVegprzYnIb-0-6779a7c2b877be57dbcc0d20feba4688)
上述代码中的注释说明了各个函数的作用,供读者参考。这里需要注意的是,代码①处使用id函数输出两个列表的内存地址,如果运行上述代码就会发现这两个列表的元素是相同的,但内存地址是不同的,也就是说,列表integers2是通过复制列表integers得到的,但是指向的内存地址并不相同。
4.3.2 排序函数
表4-1中的排序函数有sorted、reverse和sort。
• sorted是Python的内置函数,它会将当前列表排序,然后存放到新的列表中,最后返回新的列表,但是它并不修改原列表。
• reverse函数比较简单,就是将列表反转过来,最后一个元素变为第一个元素,倒数第二个元素变为第二个元素,以此类推。
• sort函数相对比较复杂,它存在两个参数,一个是key,另一个是布尔值reverse。参数key允许在复杂的情况下指定元素排序的依据,默认值为None;参数reverse设置为False(默认值也是False)时从小到大进行排序,设置为True时从大到小进行排序。
下面通过代码清单4-11来介绍简单列表的排序。
代码清单4-11:简单列表的排序
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/090-1.jpg?sign=1739045694-oJCpV2XjwdLxZi3QtBCRNvxitFsGQxTC-0-7a644a1a2315a293ac6d70efe89fdb29)
运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/090-2.jpg?sign=1739045694-BQJR2vrF6PRZSpBVrSVQDYc3sl9I00fu-0-9def4e0a7ef6666081a1b21e3749addf)
显然都是我们所期待的结果。不过有时候列表并不是那么简单,它可能相对复杂,但是存在一定的规则,如坐标(x, y)。有时候需要依据坐标的x值从大到小进行排序,或者依据坐标的y值从小到大进行排序,下面通过代码清单4-12进行说明。
代码清单4-12:排序坐标
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/090-3.jpg?sign=1739045694-ZD0G7x9xgS5Y8oHZdpcEXJJnH73coRlf-0-35f22ea51f83de2d8244d509f10a5dc3)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/091-1.jpg?sign=1739045694-JlXYzVyC9TkUY1NRhFebctXju33S8R6T-0-4f836a1179ceec67a711776f28239afe)
代码①处和代码③处定义了两个函数,它们分别返回坐标的x值和y值。代码②处的sort函数有两个参数,参数key设置为x_value函数,该函数会返回坐标的x值,因此sort函数就会根据x值进行排序,参数reverse设置为True,以x值从大到小进行排序。代码④处的sort函数有两个参数,参数key设置为y_value函数,但不设置参数reverse的值,所以它的默认值就是False,依据y值从小到大进行排序。运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/091-2.jpg?sign=1739045694-NGqf8VACsHKgwof4SS7O3XtgvRhTPP5O-0-2c3d1c8fb5de35393e63dd72588836dd)
sorted是Python的内置函数,它存在以下3个参数。
• iterable:可迭代对象,如列表。
• key:比较的依据,对于复杂元素可自定义比较的依据。
• reverse:布尔值,默认值为False,如果为False则从小到大排序,如果为True则从大到小排序。
下面通过代码清单4-13介绍内置函数sorted的使用方法。
代码清单4-13:内置函数sorted的使用方法
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/091-3.jpg?sign=1739045694-2aqp2zw0P9umqDFFGfGbcuh6qWEvYUqL-0-e74ae76e29f0dc684cda9f499d432318)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/092-1.jpg?sign=1739045694-rmCRASL7BhdWwOFjpEUNupVAyHmzoiup-0-4567e6dab8eb127df73e524669cc34d0)
上述代码中的sorted函数和listing.sort函数比较接近,只是sorted函数是将原列表进行排序,然后将其存放到新的列表中,最后返回新的列表,而并不对列表本身元素的顺序进行修改,所以在代码①处打印的两个列表的顺序会有所不同。这段代码最后还会通过id函数输出两个列表的内存地址。运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/092-2.jpg?sign=1739045694-KtnyGL6USBFqbEjeFhJgdjohBw8W3mAg-0-262aeca6a9177019c98cb4b9f78afb5d)
注意 使用列表的函数,一定要分清哪些方法会改变原列表,哪些方法是不修改原列表的。
在上述关于修改列表的函数中,函数copy和Python的内置函数sorted对原列表没有影响。它们都会创建新的列表,然后存放对应的元素。如果不希望修改原列表,而又需要频繁地对列表进行操作,则可以使用列表的copy函数。
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/092-3.jpg?sign=1739045694-PLvbB2UjJ4jMMbmxHzbxSbaFyG3k2Ovz-0-7f9e0317e7a267a12d38eacecb8667df)
运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/092-4.jpg?sign=1739045694-0AO1KE7VWgxySagOBt9Q5MG4fhVfdpLt-0-1ae40f3d4832fdefa94ddcf7973ba607)
由此可见,对列表进行复制并不会影响原列表,这样就能在不修改原列表的情况下,复制、操作和分析列表。