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

Python列表函数sorted()的用法详解

发布时间:2023-06-16 01:44:15

Python中的sorted()函数是一个非常有用的函数,它可以对列表、元组等iterable对象进行排序。下面将详细介绍sorted()函数的用法。

1. 基本用法

使用方法:sorted(iterable, key=None, reverse=False)

其中,iterable为要排序的可迭代对象,key是排序的关键字,reverse为排序规则,False表示升序排序,True表示降序排序。

示例代码:

lst = [5, 3, 7, 1, 9, 2]

result = sorted(lst)

print(result)  # 输出 [1, 2, 3, 5, 7, 9]

2. 按关键字排序

当处理的对象是字典等自定义类型时,可以使用key参数指定排序的关键字。key参数接收一个函数,该函数接收一个元素作为参数,返回一个可以用来排序的值。下面代码举例说明。

例子1:按字典key排序

lst = [{'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 18}, {'name': 'Lucy', 'age': 22}]

result = sorted(lst, key=lambda x: x['name'])

print(result)

# 输出 [{'name': 'Jerry', 'age': 18}, {'name': 'Lucy', 'age': 22}, {'name': 'Tom', 'age': 20}]

例子2:按字典value排序

lst = [{'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 18}, {'name': 'Lucy', 'age': 22}]

result = sorted(lst, key=lambda x: x['age'])

print(result)

# 输出 [{'name': 'Jerry', 'age': 18}, {'name': 'Tom', 'age': 20}, {'name': 'Lucy', 'age': 22}]

3. 稳定排序

sorted()函数排序时,通常是利用比较操作进行排序。但如果存在相同元素时,这些元素在排序后的顺序不一定是稳定的(相对顺序不变)。如果希望保持相同元素的相对顺序不变,则可以使用stable=true参数。

例如:

lst = [(1, 2), (2, 2), (1, 3), (2, 1), (1, 1)]

result = sorted(lst, key=lambda x: x[1], stable=True)

print(result)

# 输出 [(1, 2), (2, 1), (1, 3), (1, 1), (2, 2)]

4. sort()方法和sorted()函数的区别

sort()方法和sorted()函数都可以对列表进行排序,但二者有一些区别。sort()方法是列表自带的方法,直接对列表进行修改,返回值为None,而sorted()函数会返回一个新列表,原列表不变。

示例代码:

lst = [5, 3, 7, 1, 9, 2]

lst.sort()

print(lst)  # 输出 [1, 2, 3, 5, 7, 9]

lst = [5, 3, 7, 1, 9, 2]

result = sorted(lst)

print(result)  # 输出 [1, 2, 3, 5, 7, 9]

5. 总结

sorted()函数在Python中是一个非常常用的函数,可以对列表、元组等iterable对象进行排序,还可以通过key参数指定排序关键字,通过reverse参数指定排序规则,通过stable参数指定排序是否保持相同元素的稳定性,非常易用。

需要注意的是,sorted()函数返回一个新列表,原列表不变,而sort()方法则是直接修改原列表。