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

为何Python中avg函数作为sorted的key可调用,直接调用却报错?

为什么sorted用avg当key正常,直接调用avg(data)却报错?

核心原因是两种调用方式传入avg函数的参数完全不同:

  • 当avg作为sorted的key参数时,sorted会自动遍历你的data列表,把里面的每一个子列表单独传给avg。比如第一次传[5,5,5],第二次传[3,4,5],这些都是纯整数组成的列表,sum()能正常求和,len()也能正确获取长度,所以函数能正常运行并返回平均值。
  • 但你直接调用avg(data)时,传入的是整个大列表[[5,5,5], [3,4,5], [3,-3,0], ...]。这时候sum(data)会尝试把列表里的元素(也就是一个个子列表)相加,Python没法把整数和列表做加法运算,所以直接抛出了TypeError: unsupported operand type(s) for +: 'int' and 'list'。

如果想手动测试avg函数,你应该传入单个子列表,比如:

avg([5,5,5])  # 正常输出 [5, 5, 5] average is 5.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:50:01