gpt4 book ai didi

Python 初学者 - 使用 lambda 函数对元组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:45 26 4
gpt4 key购买 nike

我正在学习 Python 的教程介绍,但我一直坚持理解一段代码。这是本教程第 4.7.5 节的内容。

pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
pairs

这段代码返回

[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

因此在第一行中,它定义了具有不同元组列表的对。我明白了。第二行是我完全被抛弃的地方,我已经做了很多事情来尝试理解正在发生的事情。

我发现 sort() 正在对变量对应用一个内置函数,并且大概是按照我给它的指令对其进行排序。

sort() 函数需要一个键,而键必须使用函数定义,因此需要使用 lambda。我认为所有这些都是正确的,但我可能会偏离这里。

Lambda定义了一个新的参数,冒号左边的是“pair”,右边是定义lambda函数返回值的计算。

这就是我被抛弃的地方。 “pair[1]”是做什么的?它对结肠左侧的“对”有什么影响?

它返回什么值?除了像这样对其进行编码之外,我似乎无法让它返回任何类型的值。

我猜它以某种方式指向一个特定的元组并根据重新定位对其进行排序,但我不确定这背后的逻辑。

谁能帮我解释一下?谢谢。

最佳答案

有时在开始使用 lambda 时,显式写出函数会更容易。您的 lambda 函数等效于:

def sort_key(pair):
return pair[1]

如果我们想要更详细,我们可以解包 pair 使其更加明显:

def sort_key(pair):
int_value, string_value = pair
return string_value

因为 list.sort 根据 key 函数(如果存在)的返回值对项目进行排序,现在我们看到它是根据它们的 < em>字符串值。由于字符串按字典顺序排序,"four" 出现在 "one" 之前(想想字母顺序)。

关于Python 初学者 - 使用 lambda 函数对元组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com