首页 > 解决方案 > 通过应用函数更新循环内的列表

问题描述

我正在尝试用 Python 编写一个简单的循环。这是代码:

N = 1000

xrange = np.arange(-1.0,0.0,1.0/N)
drange = 1.0 + xrange
yrange = np.zeros(N)

range = np.arange(0,N,1)

for i in range:
    if drange[i] == 1.0:
        yrange[i] == 1.0
    else:
        yrange[i] == np.log(drange[i])/(drange[i] - 1.0)

print(yrange)

但是,for循环运行后,列表yrange不会更新。它的所有值仍然为零。

else:循环的部分有什么问题吗?

标签: pythonloops

解决方案


正如@abarnert 在评论中提到的那样,您的第一个错误是使用==而不是分配。=您的第二个错误是使用循环而不是 NumPy 矢量化操作。理想情况下,您的代码应如下所示:

N = 1000

drange = np.arange(-1.0, 0.0, 1.0 / N)
yrange = np.where(drange == 0.0, 1.0, np.log(drange + 1) / drange)

print(yrange)

最后,drange == 0.0由于舍入误差,条件永远不会成立,但希望这并不重要。


推荐阅读