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

Python中的sorted函数是如何使用的?

发布时间:2023-06-14 23:33:18

Python中的sorted函数是一种非常常用的排序方法,它可以对数字、字符串、列表、元组等序列进行排序。sorted函数是内置函数,在使用时不需要先import任何库。

一、基础排序方法

1. 对数字进行排序

使用sorted函数对数字进行排序时,可以直接传入数字列表作为参数,例如:

num_list = [3, 4, 1, 5, 2]
sorted_num_list = sorted(num_list)
print(sorted_num_list)

输出结果为:[1, 2, 3, 4, 5]

2. 对字符串进行排序

使用sorted函数对字符串进行排序时,需要传入字符串列表作为参数,例如:

str_list = ['watermelon', 'banana', 'apple', 'orange', 'pear']
sorted_str_list = sorted(str_list)
print(sorted_str_list)

输出结果为:['apple', 'banana', 'orange', 'pear', 'watermelon']

3. 对元组进行排序

使用sorted函数对元组进行排序时,需要传入元组列表作为参数,例如:

tuple_list = [('a', 3), ('b', 1), ('c', 6), ('d', 2)]
sorted_tuple_list = sorted(tuple_list)
print(sorted_tuple_list)

输出结果为:[('a', 3), ('b', 1), ('c', 6), ('d', 2)]

二、高级排序方法

1. 按照某一关键字进行排序

在排序的过程中,有时候需要按照某一关键字进行排序。这时可以使用sorted函数的key参数。例如,如果想按照每个字符串的长度进行排序,可以这样写:

str_list = ['watermelon', 'banana', 'apple', 'orange', 'pear']
sorted_str_list = sorted(str_list, key=len)
print(sorted_str_list)

输出结果为:['pear', 'apple', 'banana', 'orange', 'watermelon']

2. 按照多个关键字进行排序

在某些情况下,需要按照多个关键字进行排序。可以使用sorted函数的key参数,将多个关键字放在一个元组中。例如,在下面的列表中,需要先按照年龄进行排序,如果年龄相同,再按照名字进行排序。

people = [('Alice', 25), ('Bob', 20), ('Charlie', 25), ('David', 30)]
sorted_people = sorted(people, key=lambda x: (x[1], x[0]))
print(sorted_people)

输出结果为:[('Bob', 20), ('Alice', 25), ('Charlie', 25), ('David', 30)]

3. 降序排序

在默认情况下,sorted函数是按照升序排序的。如果要按照降序排序,可以使用sorted函数的reverse参数。例如,如果想按照每个数字的降序进行排序,可以这样写:

num_list = [3, 4, 1, 5, 2]
sorted_num_list = sorted(num_list, reverse=True)
print(sorted_num_list)

输出结果为:[5, 4, 3, 2, 1]

4. 自定义排序方法

如果需要进行一些复杂的排序操作,可以使用sorted函数的cmp参数,传入一个比较函数来进行排序。比较函数需要接收两个参数,如果第一个参数该在前面则返回负数,如果两个参数相等则返回0,如果第一个参数该在后面则返回正数。例如,如果在一个字符串列表中,需要按照第一个字母的ASCII码值进行排序,可以这样写:

str_list = ['watermelon', 'banana', 'apple', 'orange', 'pear']
def cmp_function(x, y):
    if ord(x[0]) < ord(y[0]):
        return -1
    elif ord(x[0]) == ord(y[0]):
        return 0
    else:
        return 1
sorted_str_list = sorted(str_list, cmp=cmp_function)
print(sorted_str_list)

输出结果为:['apple', 'banana', 'orange', 'pear', 'watermelon']

总结:

1. sorted函数可以对数字、字符串、列表、元组等序列进行排序。

2. sorted函数具有灵活的排序方式,可以按照关键字、多个关键字、降序、自定义方式进行排序。

3. sorted函数可以直接修改列表,也可以返回一个新的排序后的列表,具有较高的灵活性。

4. 使用lambda函数可以减少使用cmp函数的麻烦,使得代码更加简洁。