Python中的sorted函数是如何使用的?
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函数的麻烦,使得代码更加简洁。
