对Python列表常用的几个函数

前言

上一篇文章简单地介绍了什么是 Python 列表和对其增删改操作,生活中我们常常还需要对列表进行排序、反转等操作,贴心的 Python 内置了函数帮助我们实现这些操作,Great!

jingxi

好了,废话不多说,开始咯~


1. 使用方法sort()对列表进行永久性排序

Python 方法sort()让你能够较为轻松地对列表进行排序。

sort()语法:list.sort(key=None, reverse=False)

参数:

  • key - 用于指定含一个参数的函数,该函数用于从列表中每个元素中提取比较键。换言之,这是用来设置列表中元素间比较规则的。默认是None表示直接以默认规则进行排序(单词按首字母、数字按大小排序)。
  • reverse - 排序规则,reverse = True 降序, reverse = False 升序(默认)。

看到参数解释后你可能会是这样的↓

what

现在不理解没关系,文中会举例说明。

比如,你有一个汽车列表,并要让其中的汽车按字母顺序排列。你可以这样写:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

运行这段代码,方法sort()永久性地修改了列表元素的排列顺序。现在汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序,运行结果如图1-1:

1-1

图1-1

你还可以按与字母排列顺序相反的顺序排列列表元素。只需要向sort()方法中传递参数reverse = True 即可。代码可以这样写:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)

因为传递了参数reverse = True,所以运行结果会和图1-1顺序相反,结果如图1-2:

1-2

图1-2

这对元素的排列改变也是永久性的。

以上演示的都是 reverse 参数,接下来讲解 key 参数的使用,使用这个参数我们可以自定义排序规则

比如,你有一个汽车列表,并要让其中的汽车按最后一个字母排序。你可以这样写:

# elem指列表中的每一个元素
def last(elem):
    # 返回字符串最后一个字符作为排序比较键
    return elem[-1]


cars = ['bmw', 'audi', 'toyota', 'subaru']
# key参数传入的是带有一个参数的函数名
cars.sort(key=last)
print(cars)

这段代码很有意思,我们自定义了一个排序规则函数last,当然,函数名可以随便取;有一个参数elem,事实上这个参数名也可以随便取,指代列表中的每一个元素。last函数中 return elem[-1]的含义是返回列表中每个元素的最后一个字母作为比较键。

程序运行时,会把列表cars中的每一个元素当作参数传入last中,last函数返回每个元素的最后一个字母进行排序。结果如图1-3:

1-3

图1-3

2. 使用函数sorted()对列表进行临时排序

要保留列表元素原来的排列顺序,同时又想对列表进行排序,可以使用函数 sorted()

函数 sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

sorted()语法:sorted(iterable, key=None, reverse=False)

参数:

  • iterable - 可迭代对象。列表属于可迭代对象。
  • key - 用于指定含一个参数的函数,该函数用于从列表中每个元素中提取比较键。换言之,这是用来设置列表中元素间比较规则的。默认是None表示直接以默认规则进行排序(单词按首字母、数字按大小排序)。
  • reverse - 排序规则,reverse = True 降序, reverse = False 升序(默认)。

**返回值:**返回一个新的排序列表

还是拿汽车列表举个栗子:

cars = ['bmw', 'audi', 'toyota', 'subaru']

print("原始列表:")
print(cars)

print("\n排序的列表:")
print(sorted(cars))

print("\n原始列表:")
print(cars)

运行这段代码,结果如图2-1:

2-1

图2-1

我们首先打印了原始顺序的列表,在按首字母顺序(升序)对列表进行排序,但这种排序是临时的,不会改变原始列表的顺序,最后我们再次打印原始列表以确认列表元素的排列顺序与以前相同。

list.sort()方法很类似,你还可以按首字母降序排列列表元素,写法也非常相似:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars, reverse=True))

运行这段代码,你会看到结果如图2-2所示,按首字母降序排序:

2-2

图2-2

看到这里,你可能会想sorted()方法能不能自定义排序规则呢?

答案是肯定的,而且用法和 list.sort()还很像。

比如,你想让汽车列表中的汽车按第三个字母进行降序排列,你可以这样写代码:

# elem指列表中的每一个元素
def third(elem):
    # 返回元素的第三个字符作为排序比较键
    return elem[2]


cars = ['bmw', 'audi', 'toyota', 'subaru']
# key参数传入的是带有一个参数的函数名,reverse=True表示降序排列
print(sorted(cars, key=third, reverse=True))

我们先自定义了一个排序规则函数third,以列表中元素的第三个字符作为排序的比较键,接下来将这个函数作为参数传给sorted(),因为是降序排列,所以reverse要设置为True

运行代码,结果如图2-3:

2-3

图2-3

sort()sorted()的区别:

  • sort() 是应用在 list 上的方法,sorted() 可以对所有可迭代的对象进行排序操作。

  • list 的 sort() 方法返回的是对已经存在的列表进行操作,而内建函数 sorted() 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

3. 反转列表

和排序方法一样,列表反转也有两个方法:list.reverse()reversed()。因为reversed()方法涉及到迭代器,现在还不适合讲解,所以本文现阶段只讲解 list.reverse()

reverse()语法: list.reverse()

没有参数,列表可直接调用

比如,你有一个汽车列表,使用reverse()方法可轻松地反向排列其中的汽车:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars)

运行结果如图3-1:

3-1

图3-1

注意: reverse() 是反转列表元素的排列顺序,而且是永久性的。但你可以随时恢复到原来的排序顺序,只要再次调用reverse()即可。

4. 确定列表的长度

使用函数 len() 可快速获悉列表的长度。

len()语法: list.len()

返回值: 列表长度

在下面的示例中,列表包含4个元素,因此其长度为4:

4-1

注意: Python 计算列表元素个数时从1开始计数,返回的列表长度为实际长度,不会差1。

结尾语

本文对列表中常见的几个函数进行了简单的讲解,灵活运用Python内置函数对我们编写程序帮助很大,既省时又省力,简单实惠,何乐不为?Python中还有大量的内置函数,以后用到了我再写篇文章进行归纳。作为计算机从业者,在学习时要多想、多练、多总结,这样才能有提高。

如果你在学习过程中有任何疑问,可以关注文章下方↓↓↓的公众号及时与我联系,我们相互讨论,共同学习。

最后,祝你学有所成。

公众号-猿天罡

欢迎大家点赞、关注、收藏,我是Kelvin,我们下期再见,(ToT)/~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章