当前位置: 首页 > 面试题库 >

Python-如何使用decimal range()步长值?

萧芷阳
2023-03-14
问题内容

有没有办法在0和1之间以0.1步进?

我以为我可以像下面那样做,但是失败了:

for i in range(0, 1, 0.1):
    print i

相反,它说step参数不能为零,这是我没有想到的。


问题答案:

与其直接使用小数步,不如使用所需的点数来表达这一点要安全得多。否则,浮点舍入错误可能会给你带来错误的结果。

你可以使用NumPy库中的linspace函数(该库不是标准库的一部分,但相对容易获得)。需要返回多个点,还可以指定是否包括正确的端点:linspace

>>> np.linspace(0,1,11)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])
>>> np.linspace(0,1,10,endpoint=False)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

如果你确实要使用浮点阶跃值,可以使用numpy.arange。

>>> import numpy as np
>>> np.arange(0.0, 1.0, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

但是,浮点舍入错误将导致问题。这是一个简单的情况,当四舍五入错误arange仅应产生3个数字时,会导致产生长度为4的数组:

>>> numpy.arange(1, 1.3, 0.1)
array([1. , 1.1, 1.2, 1.3])


 类似资料:
  • 我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的

  • 我正在尝试调试此错误: 从这个问题中我了解到,我应该使用来获得错误日志的含义。 因此,我在Android Studio中使用下载了,现在在我的目录中有一个文件夹。 文件中说: 要使用ndk-stack,首先需要一个包含应用程序共享库未剥离版本的目录。 顺便说一句,我不知道那可能是什么。 你能给我一个循序渐进的指导吗?一步一步的。 TL;DR: 我有上面的错误日志,需要你帮我理解。

  • 问题内容: 我正在为我的Python模块编写文档(使用Sphinx和reST),并且发现当交叉引用其他Python对象(模块,类,函数等)时,完整的对象名最终变得非常长。通常它的长度超过80个字符,我不惜一切代价避免。 这是一个例子: 问题是,在为 ReallyLongExampleClassName 类创建文档时,我为完整路径名生成了它。 我想知道是否有办法解决这个问题?我尝试了以下方法,但没有

  • 问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做

  • 问题内容: 我还没有找到关于如何实际使用函数的可理解的解释。我想做的是这样的: 列出一个列表-在这种情况下,是一个对象化lxml元素的子元素 根据一些标准将其分为几组 然后,稍后分别遍历每个组。 我已经阅读了文档和示例,但是尝试将其应用于简单的数字列表之外却遇到了麻烦。 那么,我该如何使用?我应该使用另一种技术吗?指向良好“前提”阅读的指针也将受到赞赏。 问题答案: 重要说明:你必须先对数据进行排

  •   Pickling 是将 Python对象 转换为 字节流 的过程, 通常称为序列化。Unpickling 是逆操作,将 字节流 转换成 python对象, 通常称为反序列化。python中我们用pickle.dump 和 pickle.load 来实现序列化和反序列化。 ## Pickling import pickle data =  {     'Names': ["Karl","R