Pythonsorted函数详解(高级篇)
Python中的sorted()函数是一种高级排序函数,它可以对列表、元组、字典等数据类型进行排序。本攻略将详细讲解sorted()函数的用法,包括基本用法、高级用法、自定义排序等。
基本用法
我们可以使用sorted()函数对列表进行排序。以下是示例代码,演示如何使用sorted()函数对列表进行排序:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst1 = sorted(lst)
print(lst1)
在上面的示例代码中,我们首先定义了包含11个整数的列表lst。然后,我们使用sorted()函数对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
输出结果为:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
高级用法
按照关键字排序
我们可以使用key参数指定一个函数来生成排序关键字。以下是示例代码,演示如何按照关键字排序:
lst = ['apple', 'banana', 'orange', 'watermelon']
lst1 = sorted(lst, key=len)
print(lst1)
在上面的示例代码中,我们首先定义了一个包含四个字符串的列表lst。然后,我们使用key参数指定len函数作为排序关键字,对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
输出结果为:
['apple', 'banana', 'orange', 'watermelon']
按照多个关键字排序
我们可以使用多个关键字对列表进行排序。以下是示例代码,演示如何按照多个关键字排序:
lst = [('apple', 3), ('banana', 2), ('orange', 4), ('watermelon', 1)]
lst1 = sorted(lst, key=lambda x: (x[1], x[0]))
print(lst1)
在上面的示例代码中,我们首先定义了一个包含四个元组的列表lst,每个元组包含一个字符串和一个整数。然后,我们使用lambda函数作为排序关键字,对lst进行排序,首先按照第二个元素排序,然后按照第一个元素排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
输出结果为:
[('watermelon', 1), ('banana', 2), ('apple', 3), ('orange', 4)]
自定义排序
我们可以使用cmp参数指定一个函数来进行自定义排序。以下是示例代码,演示如何进行自定义排序:
def cmp(x, y):
if x[1] < y[1]:
return -1
elif x[1] > y[1]:
return 1
else:
return 0
lst = [('apple', 3), ('banana', 2), ('orange', 4), ('watermelon', 1)]
lst1 = sorted(lst, cmp=cmp)
print(lst1)
在上面的示例代码中,我们首先定义了一个自定义排序函数cmp,该函数接受两个参数x和y,如果x的第二个元素小于y的第二个元素,则返回-1,如果x的第二个元素大于y的第二个元素,则返回1,否则返回0。然后,我们定义了一个包含四个元组的列表lst,每个元组包含一个字符串和一个整数。接着,我们使用cmp参数指定cmp函数作为排序函数,对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
输出结果为:
[('watermelon', 1), ('banana', 2), ('apple', 3), ('orange', 4)]
示例
以下是一个示例代码,演示了sorted()函数的基本用法、高级用法和自定义排序:
# 基本用法
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst1 = sorted(lst)
print(lst1)
# 高级用法
lst = ['apple', 'banana', 'orange', 'watermelon']
lst1 = sorted(lst, key=len)
print(lst1)
lst = [('apple', 3), ('banana', 2), ('orange', 4), ('watermelon', 1)]
lst1 = sorted(lst, key=lambda x: (x[1], x[0]))
print(lst1)
# 自定义排序
def cmp(x, y):
if x[1] < y[1]:
return -1
elif x[1] > y[1]:
return 1
else:
return 0
lst = [('apple', 3), ('banana', 2), ('orange', 4), ('watermelon', 1)]
lst1 = sorted(lst, cmp=cmp)
print(lst1)
在上面的示例代码中,我们演示了sorted()函数的基本用法、高级用法和自定义排序。首先,我们演示了如何对列表进行排序。接着,我们演示了如何按照关键字排序和按照多个关键字排序。最后,我们演示了如何进行自定义排序。需要根据具体的需求选择合适的排序方式。
示例说明
示例1
在第一个示例中,我们定义了一个包含11个整数的列表lst,然后使用sorted()函数对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
示例2
在第二个示例中,我们定义了一个包含四个字符串的列表lst,然后使用key参数指定len函数作为排序关键字,对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
示例3
在第三个示例中,我们定义了一个包含四个元组的列表lst,每个元组包含一个字符串和一个整数。然后,我们使用lambda函数作为排序关键字,对lst进行排序,首先按照第二个元素排序,然后按照第一个元素排序,并将结果存储在lst1中。最后,我们输出lst1的内容。
示例4
在第四个示例中,我们定义了一个自定义排序函数cmp,该函数接受两个参数x和y,如果x的第二个元素小于y的第二个元素,则返回-1,如果x的第二个元素大于y的第二个元素,则返回1,否则返回0。然后,我们定义了一个包含四个元组的列表lst,每个元组包含一个字符串和一个整数。接着,我们使用cmp参数指定cmp函数作为排序函数,对lst进行排序,并将结果存储在lst1中。最后,我们输出lst1的内容。