Python 列表 sort() 方法

Python sort() 语法

sort() 是 Python 列表的一个方法,它用于实现列表元素的排序(升序或降序)。

语法:

list.sort(key=None, reverse=False)

说明:

sort() 函数接收以下 2 个参数。

  • key(可选,默认值:None):它的值是一个函数名,用于定义排序规则。
  • reverse(可选,默认值:False):它的值是一个布尔值,用于表示升序还是降序,默认值为 False。当 reverse = False 时,表示升序(从小到大)。当 reverse = True 时,表示降序(从大到小)。

提示: sort() 方法会直接修改原列表。如果想要保留原列表,可以考虑 2 种方式:(1)使用 sorted() 函数;(2)先复制再使用 sort()。

Python sort() 摘要

使用频率
修改原列表
时间复杂度 O(N log N)
官方文档 查看

Python sort() 示例

接下来,我们通过几个简单的例子来讲解一下 Python sort() 方法是如何使用的。

示例 1:sort() 按升序排列

nums = [3, 9, 1, 12, 50, 21]
nums.sort()
print(nums)

运行结果如下。

[1, 3, 9, 12, 21, 50]

分析:

nums.sort() 等价于 nums.sort(reverse=False),表示升序(也就是从小到大排列)。

示例 2:sort() 按降序排列

nums = [3, 9, 1, 12, 50, 21]
nums.sort(reverse=True)
print(nums)

运行结果如下。

[50, 21, 12, 9, 3, 1]

分析:

nums.sort(reverse=True) 使用的是降序,也就是从大到小排列。

示例 3:sort() 使用 “内置函数” 作为 key

colors = ['red', 'orange', 'yellow', 'green', 'blue']
colors.sort(key=len)
print(colors)

运行结果如下。

['red', 'blue', 'green', 'orange', 'yellow']

分析:

colors.sort(key=en) 中的 “key=len” 表示使用 Python 内置函数 len() 作为参数,此时会根据元素的长度来排序。

示例 4:sort() 使用 “自定义函数” 作为 key

def byAge(lst):
    return lst[1]

students = [('Jack', 21), ('Lucy', 19), ('Tony', 20)]
students.sort(key=byAge)
print(students)

运行结果如下。

[('Lucy', 19), ('Tony', 20), ('Jack', 21)]

分析:

上面定义了一个名为 byAge 的函数,用于实现根据元组第 2 个元素(即年龄)进行排序。这种方式在某些场景中很有用,比如根据员工的薪水进行排序。

示例 5:sort() 使用 “lambda 表达式” 作为 key

students = [('Jack', 21), ('Lucy', 19), ('Tony', 20)]
students.sort(key=lambda x: x[1])
print(students)

运行结果如下。

[('Lucy', 19), ('Tony', 20), ('Jack', 21)]

分析:

lambda x: x[1] 表示按元组的第二个元素(年龄)进行排序,代码更加简洁明了。

sort() 方法和 sorted() 函数

sort() 方法和 sorted() 函数虽然看起来很像,但它们是完全不同的两个东西,它们之间的区别如下:

  • sort():是列表的一个方法,它会修改原列表。
  • sorted():是一个内置函数,它不会修改原列表。此外,sorted() 还可以用于字典等的排序。
sort() 方法 vs sorted() 函数
list.sort() sorted()
类型 列表方法 内置函数
操作对象 仅列表 可迭代对象(任意)
修改原对象
返回值 None 排序后的新列表

示例 6:使用 sort() 方法

nums = [3, 9, 1, 12, 50, 21]
nums.sort()
print(nums)

运行结果如下。

[1, 3, 9, 12, 21, 50]

分析:

sort() 方法会直接对原列表进行修改,但很多时候并不希望原列表被修改,此时就可以使用 sorted() 函数来实现。

示例 7:使用 sorted() 函数

nums = [3, 9, 1, 12, 50, 21]
result = sorted(nums)
print(nums)
print(result)

运行结果如下。

[3, 9, 1, 12, 50, 21]
[1, 3, 9, 12, 21, 50]

分析:

sorted() 函数并不会影响原列表,而是会返回一个新列表。

上一篇: reverse()

下一篇: clear()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号