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

Python中的sorted()函数

发布时间:2023-05-20 21:29:34

Python中的sorted()函数被广泛用于对列表、元组、字典等数据结构进行排序。本文将介绍sorted()函数的用法、参数和返回值,并讲述一些常用的排序技巧和注意事项。

一、sorted()函数的用法

sorted()函数的基本语法如下:

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

其中,iterable是要排序的列表、元组、字典、集合等可迭代对象;key和reverse是可选参数。

二、sorted()函数的参数

1. iterable:要排序的可迭代对象,可以是列表、元组、字典或集合等。

2. key:用于排序的函数,可以是自定义函数或lambda表达式。默认为None,表示按元素大小排序。

3. reverse:默认为False,表示升序排序。如果设置为True,则表示降序排序。

三、sorted()函数的返回值

sorted()函数返回的是一个新的排好序的列表。

四、常用排序技巧

1. 按元素大小排序

默认情况下,sorted()函数会按元素大小升序排列。例如:

>>> nums = [4, 2, 1, 3]

>>> sorted_nums = sorted(nums)

>>> print(sorted_nums)

[1, 2, 3, 4]

2. 按照指定规则排序

如果要按照指定规则排序,则需要使用key参数指定排序函数。例如,按字符串长度排序:

>>> words = ['apple', 'banana', 'orange', 'peach']

>>> sorted_words = sorted(words, key=lambda x: len(x))

>>> print(sorted_words)

['apple', 'peach', 'banana', 'orange']

上面的代码中,lambda表达式x:len(x)返回字符串x的长度,按照长度升序排序。

3. 多条件排序

如果要按多个条件排序,可以使用元组。例如,按照成绩降序排列,如果成绩相同则按名字升序排列:

>>> students = [('Tom', 80), ('Jerry', 90), ('Bob', 80), ('Alice', 70)]

>>> sorted_students = sorted(students, key=lambda x: (-x[1], x[0]))

>>> print(sorted_students)

[('Jerry', 90), ('Bob', 80), ('Tom', 80), ('Alice', 70)]

上面的代码中,key函数返回一个元组, 个元素是成绩的相反数(即降序排列),第二个元素是姓名的升序排列。

4. 字典排序

如果要按字典的键或值排序,可以使用字典的items()方法和sorted()函数的key参数。例如,按字典键升序排列:

>>> score_dict = {'Tom': 80, 'Jerry': 90, 'Bob': 80, 'Alice': 70}

>>> sorted_dict = sorted(score_dict.items(), key=lambda x: x[0])

>>> print(sorted_dict)

[('Alice', 70), ('Bob', 80), ('Jerry', 90), ('Tom', 80)]

上面的代码中,score_dict.items()返回字典的键值对元组,按照键的大小升序排列。

5. 列表倒序排序

如果要将列表倒序排列,则可以使用reverse参数。例如:

>>> nums = [4, 2, 1, 3]

>>> sorted_nums = sorted(nums, reverse=True)

>>> print(sorted_nums)

[4, 3, 2, 1]

上面的代码中,reverse=True表示降序排列。

五、注意事项

1. sorted()函数返回的是一个新的列表,原来的列表并没有被修改。

2. key函数应该返回一个可以比较的值,否则会报TypeError错误。

3. 如果需要排序的对象是一个字典,应该使用字典的items()方法或keys()方法转换为列表后再进行排序。

4. 如果需要将列表倒序排列,应该使用reverse参数,而不是对列表进行逆序操作。

总之,Python中的sorted()函数是一个非常强大、灵活和易用的排序工具,掌握它的用法和技巧可以大大提高代码的效率和可读性。