python - 通过应用函数更新循环内的列表
问题描述
我正在尝试用 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:
循环的部分有什么问题吗?
解决方案
正如@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
由于舍入误差,条件永远不会成立,但希望这并不重要。
推荐阅读
- r - R Shiny:反应性数据选择在使用正则表达式的 postgresql/postgis db 查询中使用了多个 selectInput
- javascript - 变量值不保存在 if 循环中
- c# - 为什么 dotnet publish 不发布预期的版本?
- python - 如何增加ylabel的可用空间?
- bash - 如何将 bash 中的用户空闲会话与分钟限制进行比较?
- javascript - 如何迭代两个共享公共属性的数组?
- java - 如何删除或隐藏 Textarea 的边框?
- javascript - 如何让文本动画看起来好像它在另一层下
- javascript - 用 axios 对象制作组件
- python - 在 scrapy 中使用 try/except 子句无法获得所需的结果