gpt4 book ai didi

python - 带元组键的 Max 函数 [更新]

转载 作者:行者123 更新时间:2023-12-01 07:48:34 24 4
gpt4 key购买 nike

我试图了解以下行中发生的情况:

print(max([1, -2, 3, -1], key=lambda x:(-abs(x), x), default=0))

我的理解是,lambda 将为列表 [1, -2, 3, -1] 中的每个元素返回一个元组。

但是如何将列表与元组进行比较呢?

为什么输出是 1,而不是 3?

我已经尝试过

print(max([1, -2, 3, -1], key=(-1, 1), default=0))

但它说 uple 不可调用

<小时/>

理解这里问题的关键是使用的关键函数。如果很难理解,建议您阅读this并使用 sort 而不是 max (因为 sort 会给你一个信息性答案)

我的理解:
步骤 1. lambda 函数转换 a = [1, -2, 3, -1]换一个新的b = [(-1, 1), (-2, -2), (-3, 3), (-1, 1)]
步骤2. max/sort将处理新列表b 。它会首先比较第一个元素,如果绑定(bind),则比较第二个
步骤3.转换sorted(b)a而言

最佳答案

max 函数遍历列表中的每个元素,并应用 lambda 函数来确定每个项目的值,从而为您提供:

[(-1,1), (-2,-2), (-3,3), (-1,-1)]

然后它运行 max,默认情况下它首先比较每个元组第一个索引处的项目。由于第一个元素在所有情况下都是负数,因此-1是最大的第一个元素,对应于原始中的1-1大批。由于存在平局,因此它会比较第二个元素,将 (-1,1) 作为新数组中最大的元素,该元素对应于原始数组中的 1

关于python - 带元组键的 Max 函数 [更新],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339499/

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