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

使用列表推导结合两个列表转换时遇'int'对象不可迭代错误求助

解决'int'对象不可迭代的错误

嘿,我来帮你梳理下问题所在!你碰到的这个错误,核心原因是对sum()函数的用法理解有误啦。

先看你的代码:

errors = [sum((i-j)**2) for i,j in zip(y, y_predicted)]

这里(i-j)**2计算出来的是一个单个整数,而sum()函数要求传入的是一个可迭代对象(比如列表、元组、生成器),直接给它一个整数,自然会报“int对象不可迭代”的错误。

接下来分两种常见场景给你解决方案:

场景1:想得到每个对应元素的平方差组成的列表

如果你是要把y和y_predicted中每一对元素的平方差存成一个列表,那完全不需要sum(),直接保留平方差计算就行:

# 得到长度为10的平方差列表
errors = [(i - j)**2 for i, j in zip(y, y_predicted)]

场景2:想计算所有平方差的总和(总平方误差)

如果你的目标是算出所有对应元素平方差的总和,那应该把sum()放在列表推导(或者更高效的生成器表达式)外面:

# 计算总平方误差
total_error = sum((i - j)**2 for i, j in zip(y, y_predicted))
# 或者先生成平方差列表再求和(效率稍低,但逻辑直观)
errors = [(i - j)**2 for i, j in zip(y, y_predicted)]
total_error = sum(errors)

另外可以确认下y和y_predicted里的元素都是数值类型(比如int、float),只要这点没问题,上面的代码就能正常运行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:02:51