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() 还可以用于字典等的排序。
| 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() 函数并不会影响原列表,而是会返回一个新列表。
