You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在该Python代码场景中max()函数返回值为7?

问题解析

先看你的代码逻辑:

l = [7, 9, 5, 6, 13, 5, 15, 3]
t = max(l, key=lambda g:g if g%9==1 else 0)

你预期当列表中没有除以9余1的元素时,t等于0,但实际得到的是列表中的某个元素(这里你提到是7,按代码逻辑所有元素的key值都是0,实际应该返回列表最大元素15),核心原因如下:

  • max()函数的作用是从传入的可迭代对象(此处为列表l)中返回元素,它只会返回l里存在的元素,不会返回key函数里的0——因为0根本不在列表l中。
  • 当所有元素的key计算结果都是0时,max()会在原列表的元素里比较,最终返回原列表中最大的那个元素(若多个元素key值相同,返回第一个出现的最大值)。

要实现你的需求(取除以9余1的最大元素,无符合条件元素则返回0),正确写法是先筛选符合条件的元素,再取最大值:

l = [7, 9, 5, 6, 13, 5, 15, 3]
valid_elements = [x for x in l if x % 9 == 1]
t = max(valid_elements) if valid_elements else 0

这样当没有符合条件的元素时,t就会是0。

内容的提问来源于stack exchange,提问作者CrossTick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:57:12