通过应用函数更新循环内的列表

问题描述 投票:1回答:1

我正在尝试用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:部分有什么问题吗?

python loops
1个回答
0
投票

您的第一个错误是使用==而不是=进行分配,如@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永远不会成立,但希望这并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.