与Python列表相关的函数

对于列表而言,除了设置和修改其中的元素,还有一些其他的方法也很有用,我们来具体看一下。

Python 获取列表的长度

有时候,知道列表中有多少个元素的话,会很有帮助。例如,如果我们不断地向 fruits 中添加水果,可能就会忘记有多少种水果。使用 len() 函数可以快速获取列表的长度。在下面的示例中,fruits 列表包含了 5 个元素,因此其长度为 5:

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> len(fruits)
5


fruits 列表中有 5 个元素,我们知道它们的索引分别是 0、1、2、3 和 4。这给我们了一条有用的信息:列表中的最后一个索引总是等于列表的长度减去 1。这意味着,不管列表有多长,都有一种简单的方法来访问列表中的最后一个元素:

>>> fruits[len(fruits)-1]
'grape'

Python 查找列表中单个元素的索引

要查找列表中单个元素的索引,使用 index() 方法。我们还是以 fruits 列表为例,来获取其中某个元素的索引,如下所示。

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']
>>> fruits.index("banana")
2
>>> fruits.index("grape")
4

我们使用 fruits.index("banana") 和 fruits.index("grape") 来获取元素“banana”和“grape”的索引位置。

因为列表中“banana”元素的索引是 2,所以 fruits.index("banana") 返回 2。列表中“grape”元素的索引是 4,所以 fruits.index("grape") 返回 4。

Python 使用 sort() 方法对列表排序

如果想要对列表中的元素进行排序,可以使用 sort() 方法。我们还是以 fruits 列表为例,假设想要按照字母顺序来排列列表中的元素,方法如下所示。

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']
>>> fruits.sort()
>>> print(fruits)
['apple', 'banana', 'cherry', 'grape', 'orange']

可以看到,列表中元素的位置发生了变化,现在变成了按照元素的第1个字母的顺序排列。

这里需要注意的是,当我们使用 sort() 方法对列表元素排序后,元素的排列顺序就彻底改变了,没有办法再恢复到原来的顺序。

如果我们想要按照字母相反的顺序排列列表中的元素,只需要在 sort() 方法的括号中增加 reverse=True 就可以,这是我们为该方法传递的参数,用来告诉该方法要以倒序排列元素。还是以 fruits 列表为例,代码如下所示:

>>> fruits.sort(reverse=True)
>>> print(fruits)
>>> print(fruits)
['orange', 'grape', 'cherry', 'banana', 'apple']

提示:sort 方法接受两个参数,但这两个参数只能通过关键字来传递。

第 1 个参数 key,指定在进行比较之前要在每个列表元素上调用的函数,它接受一个参数并返回一个用于对列表排序的键;其默认值为 None,表示每次比较排序之前不对比较项进行任何操作。

第 2 个参数 reverse ,表示是否要进行倒序排列;其默认值是 False,表示按照顺序排列。

这个方法的相关概念比较抽象,在这里,读者只需要简单了解即可,后面我们会介绍什么是参数,什么是函数,并且会看到 sort 方法的用法示例。

Python 用 reverse() 方法反转列表

除了用 sort() 方法对列表元素进行排序,我们还可以使用 reverse() 方法将列表中的元素进行反向排列。

还是以 fruits 列表为例,假设最初的元素排列顺序是 ['apple', 'cherry', 'banana', 'orange', 'grape'] ,通过 reverse() 方法,我们可以将列表中的元素的顺序全部反转过来,变成 ['grape', 'orange', 'banana', 'cherry', 'apple']。代码如下所示:

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']
>>> fruits.reverse()
>>> print(fruits)
['grape', 'orange', 'banana', 'cherry', 'apple']