我正在尝试用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:
部分有问题吗?
答案 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
永远不会为真,但希望这并不重要。