无法理解键在对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
方法,您可以看到它的命名参数为key
:https://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列表进行排序中的功能的主要内容,如果未能解决你的问题,请参考以下文章