欢迎访问宙启技术站
智能推送

Python内置函数sorted()的使用方法详解

发布时间:2023-06-14 04:31:41

Python内置函数sorted()用于对一个可迭代对象进行排序操作,返回一个新的已排序的列表,不会修改原来的可迭代对象。本文将介绍sorted()函数的使用方法以及一些注意事项。

语法格式

sorted(iterable, *, key=None, reverse=False)

参数说明

- iterable:必填参数,表示可迭代对象,如列表、元组、字符串等。

- key:可选参数,用于指定排序时的比较函数,可以自定义一个函数,也可以使用 lambda 表达式。默认为 None,表示不需要指定比较函数。

- reverse:可选参数,表示排序顺序,True 表示降序,False 表示升序。默认为 False。

示例代码1

对列表进行排序,按照默认的升序排列。

lst = [4,5,1,3,2]
res = sorted(lst)
print(res)  # [1, 2, 3, 4, 5]

示例代码2

对元组进行排序,按照指定的降序排列。

tup = (3,2,5,4,1)
res = sorted(tup, reverse=True)
print(res) # [5, 4, 3, 2, 1]

示例代码3

对字符串进行排序,按照字符串的长度进行升序排列。

s = "Python is a programming language"
res = sorted(s.split(), key=len)
print(res) # ['a', 'is', 'Python', 'language', 'programming']

sorted()函数结合lambda表达式的例子

lst = [("Alice", 24), ("Bob", 28), ("Charlie", 21)]
res = sorted(lst, key=lambda x: x[1], reverse=True)
print(res) # [('Bob', 28), ('Alice', 24), ('Charlie', 21)]

在上面的例子中,使用 lambda 表达式作为 key 参数,表示按照元组的第二个元素(即年龄)进行降序排列。

注意事项

- sorted()函数返回一个新的列表,原来的列表不受影响。

- 当排序对象是一个字典时,函数会默认按照字典键进行排序。而我们可以利用字典.items()方法,转化成一个包含元组的列表,按照元组中的元素进行排序。

- 当多个元素相等时,排序结果可能不稳定。

- 当对象中包含非基本类型时(如自定义的对象),必须通过 key 参数来指定比较函数。

- 如果对象中的元素不可比较,会抛出 TypeError 异常。