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

为何Python的min()在可迭代对象仅含一个元素时仍调用key函数?

Python内置min/max/sorted在单元素可迭代对象时仍调用key函数的疑问

Python内置函数min()哪怕可迭代对象里只剩一个元素,还是会执行指定的key函数:

foo = ['2']
def key_func(value):
    print("Key function called")
    return int(value)
print(min(foo, key=key_func))

运行结果:

Key function called
2

max()和sorted()也存在一模一样的现象。

为什么不对len(iterable) == 1的情况做优化?要是key_func是计算成本极高的操作,这时候调用它完全没有意义。

我查过Python官方文档,没找到关于这个行为的解释;但我觉得肯定有合理的原因,毕竟Python核心开发团队在定义和论证语言及标准库行为时一向非常严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:20:11