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

时间:2018-09-12 02:54:07

标签: python loops

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

1 个答案:

答案 0 :(得分: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永远不会为真,但希望这并不重要。