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

Python中的sorted()函数—如何对列表或序列进行排序

发布时间:2023-06-06 10:49:38

在Python中,我们使用sorted()函数对一个可迭代的对象进行排序,它可以对任何一个序列进行排序,包括字符串、列表、元组等。sorted()函数的语法如下:

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

其中,iterable表示可迭代的对象;key是一个函数,用于从每个元素中提取一个用于排序的关键字;reverse用于确定排序顺序,如果设置为True,将按降序排序,否则按升序排序。

下面我们来一一介绍sorted()函数中的三个参数:

1. iterable

iterable可以是任何可迭代的对象,比较常见的是列表(list)和元组(tuple)。

对列表进行排序:

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

对元组进行排序:

tup = (3, 1, 4, 6, 2, 5)
print(sorted(tup))  # [1, 2, 3, 4, 5, 6]

2. key

key参数接收一个函数,并且可以根据这个函数的返回值进行排序。比如可以按照字符串的长度对列表进行排序:

lst = ['apple', 'pear', 'banana', 'orange']
print(sorted(lst, key=len))  # ['pear', 'apple', 'banana', 'orange']

对于复杂的数据结构,也可以使用lambda表达式来定义key函数:

dct = [{'name': 'Tom', 'age': 18}, {'name': 'Jerry', 'age': 20}, {'name': 'Marry', 'age': 15}]
print(sorted(dct, key=lambda x: x['age'], reverse=True))
# [{'name': 'Jerry', 'age': 20}, {'name': 'Tom', 'age': 18}, {'name': 'Marry', 'age': 15}]

上述例子中,我们按照字典中的年龄进行排序,而使用lambda表达式将字典中的值进行提取后进行排序。

3. reverse

reverse参数用于设置排序顺序,如果设置为True,将按降序排序,否则按升序排序。默认是按升序排列。

对列表按降序排序:

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

或者按照字符串长度降序排序:

lst = ['apple', 'pear', 'banana', 'orange']
print(sorted(lst, key=len, reverse=True))  # ['orange', 'banana', 'apple', 'pear']

注意事项:

1. sorted()函数并不会改变原来的序列,而是返回一个新的排序后的序列。如果需要在原来的序列上进行排序,请使用sort()方法。

2. 对于元组、字符串等不可变对象的排序结果是一个列表,而不是原类型。如:

tup = (3, 1, 4, 6, 2, 5)
print(sorted(tup))  # [1, 2, 3, 4, 5, 6]

s = 'hello'
print(sorted(s))  # ['e', 'h', 'l', 'l', 'o']

综上所述,sorted()函数是Python中一个非常常用的排序函数,可以灵活应用于各种数据类型的排序。掌握了sorted()函数的使用,可以让你的Python编程更加高效并且优雅。