Python sorted函数详解(高级篇)

  • Post category:Python

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的内容。