如何修复此代码中不可迭代的 'float' 对象

How to fix 'float' object not iterable in this code

我正在尝试写这个公式:

J = 1/2m∑i(x−y)2

在 Python 代码中,但它给了我一个错误,我不知道为什么。

我定义了 xy 值并想计算 J 但是当我为 J 编写代码时它给了我一个错误。

x = 0.5
y = 1
J = [sum(x**2 - y**2)]*1/6

报错:

TypeError: 'float' object is not iterable

sum 内置方法适用于可迭代对象(例如列表) 你的代码的执行是这样的:

  1. 评估 x**2 - y**2 这是一个比
  2. 浮点数
  3. 这个浮点数将作为 sum 函数的参数,所以你得到了你可以使用的错误:

    J = (x**2 - y**2) / 6

如果 x 和 y 是列表,例如:

x = [0.5, 1, 1.5] 
y = [1 ,2, 3]

你可以试试:

J = sum(i**2 + j**2 for i, j in zip(x, y)) / 6