无法理解键在对python列表进行排序中的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法理解键在对python列表进行排序中的功能相关的知识,希望对你有一定的参考价值。

对不起,当键=键时,我无法理解:

def key(x):
    return x[1]

a = [(1, 2), (3, 1), (5, 10), (11, -3)]
a.sort(key=key)
答案

您需要首先了解什么是关键字(命名)参数:https://treyhunner.com/2018/04/keyword-arguments-in-python/

此后,对于属于[sort]列表的a方法,您可以看到它的命名参数为keyhttps://www.programiz.com/python-programming/methods/list/sort

命名参数key接受一个函数,该函数的返回值将用于排序,在您的情况下,第1行中定义的key函数将使用列表中每个元组的第二个元素排序列表。

  • LHS上的第一个key =属于列表的sort方法的命名参数
  • RHS上的第二个key = key函数定义,该函数返回用于对列表进行排序的值
另一答案

sort采用名为key的关键字参数。对于a.sort(key=key),为关键字参数key赋予了功能key。然后,sort函数将key函数应用于列表中的每个元素,然后根据此函数调用的结果对列表进行排序。

例如,在重命名功能时,这可能会减少混乱。键功能。

def key_function(x):
    return x[1]

a = [(1, 2), (3, 1), (5, 10), (11, -3)]
a.sort(key=key_function)

该函数返回输入值的第二个元素,因此(1, 2)的值为2,而(3, 1)的值为1。然后,这些值将确定元组的排序方式,而不是通常对元组的排序方式。

另一答案

如chaooder所说,排序功能需要一个命名参数,即“键”。这是该功能的参数,并且始终命名为“键”。

调用函数时,您传递了另一个函数作为此参数的值。您可以为此功能设置任何名称。

令人困惑的是,在代码中,您作为值传递的函数恰好与参数的名称相同-“ key”。

我敢打赌,如果您这样子,不会让您感到困惑:

def mykey(x):

返回x [1]

a = [(1,2),(3,1),(5,10),(11,-3)]

a.sort(key = mykey)

编辑:用户Talon在我编写此文章时回答了相同的问题,所以他击败了我:)

以上是关于无法理解键在对python列表进行排序中的功能的主要内容,如果未能解决你的问题,请参考以下文章

c#中array.sort()用法

Python数据结构按字母顺序排序列表

即使在对值进行排序后,python 行也会向后移动

在对python进行分组和排序后删除相似的数据

根据对象中的变量对对象的数组列表进行排序

Python一行代码教你实现列表嵌套排序