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

Python中的sorted()函数及其参数详解

发布时间:2023-06-11 06:18:02

Python是一种非常流行的编程语言,各种库函数和工具库都非常丰富。其中非常常用的一种函数就是sorted()函数。它可以将列表或其他可迭代对象中的元素排序,并返回一个新的有序序列。本文将对sorted()函数及其参数进行详细讲解。

1. sorted()函数的基本用法

首先,让我们看看sorted()函数的基本用法。其语法如下:

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

其中,iterable表示要排序的可迭代对象,例如一个列表或元组;key表示排序的规则,通常是一个函数,用于从每个元素中提取一个关键字;reverse表示是否要进行倒序排列,默认是False,即升序排列。

下面给出一个示例:

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

    >>> sorted_lst = sorted(lst)

    >>> print(sorted_lst)

    [1, 2, 3, 4]

上述代码中,我们首先定义列表lst,并将其进行排序,生成一个新的有序列表sorted_lst。输出结果为[1,2,3,4],即升序排列。

2. 通过key参数自定义排序规则

有时候,我们需要对一个用自己定义的规则排序,此时可以使用key参数。key参数应该是一个函数,它从每个元素中提取一个关键字,并将其用于排序。

例如,我们可以定义一个函数,根据每个字符串的长度排序:

    >>> lst = ["apple", "grape", "banana", "orange"]

    >>> sorted_lst = sorted(lst, key=len)

    >>> print(sorted_lst)

    ['apple', 'grape', 'banana', 'orange']

上述代码中,我们使用了len函数作为key参数,将每个字符串的长度作为关键字进行比较。

另外,我们还可以使用lambda表达式快速定义一个函数作为key参数:

    >>> lst = ["apple", "grape", "banana", "orange"]

    >>> sorted_lst = sorted(lst, key=lambda x: x[1])

    >>> print(sorted_lst)

    ['banana', 'apple', 'orange', 'grape']

上述代码中,我们使用了一个lambda表达式,将字符串的第二个字符作为关键字来排序。

3. 使用reverse参数进行倒序排序

如果我们需要进行倒序排序,可以使用reverse参数。将参数reverse设置为True即可。

例如,比如我们需要对一个数列进行倒序排序:

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

    >>> sorted_lst = sorted(lst, reverse=True)

    >>> print(sorted_lst)

    [4, 3, 2, 1]

上述代码中,我们将reverse参数设置为True,将lst进行了倒序排序。

4. sorted()与list.sort()的区别

除了sorted()函数外,Python中还有一个sort()方法,可以对**列表**进行排序。二者的使用方式类似,但是有一个重要的区别:sorted()函数会返回一个新的有序列表,而sort()方法会在原地修改列表,不返回任何值。

例如,我们可以使用sort()方法对一个列表进行升序排序:

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

    >>> lst.sort()

    >>> print(lst)

    [1, 2, 3, 4]

上述代码中,我们对lst进行排序,并在原处进行修改,输出结果为[1,2,3,4]。

而如果使用sorted()函数进行排序:

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

    >>> sorted_lst = sorted(lst)

    >>> print(lst)

    [4, 3, 1, 2]

    >>> print(sorted_lst)

    [1, 2, 3, 4]

上述代码中,我们对lst进行排序,并生成一个新的有序列表sorted_lst。lst没有被修改,输出结果为[4,3,1,2],sorted_lst为[1,2,3,4]。

5. 总结

本文介绍了Python中的sorted()函数及其参数。sorted()函数具有很强的灵活性,在多种情况下都可以使用。如果需要进行原地修改,则应使用sort()方法。两者的使用方式类似,但有重要的区别,使用时应注意。