繁体   English   中英

range()with float step argument [duplicate]

range() with float step argument [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

可能重复:
Python十进制范围()步长值

我想生成这样的列表:

[0, 0.05, 0.1, 0.15 ... ]

范围(0,1,0.05)会很好,但它不起作用:

range()整数步骤参数预期,得到浮点数。

你有什么优雅的想法吗? ;)

5 个回复

如果你可以使用numpy,那么使用numpy.linspace是个好主意。 试图在浮点数上拟合range逻辑的函数,包括numpy自己的arange ,通常会对结束边界是否在列表中结束感到困惑。 linspace通过让您明确指定起点,终点和所需的元素数来优雅地解决这个问题:

>>> import numpy
>>> numpy.linspace(0.0, 1.0, 21)
array([ 0.  ,  0.05,  0.1 ,  0.15,  0.2 ,  0.25,  0.3 ,  0.35,  0.4 ,
        0.45,  0.5 ,  0.55,  0.6 ,  0.65,  0.7 ,  0.75,  0.8 ,  0.85,
        0.9 ,  0.95,  1.  ])

在Python 3中,range返回一个生成器(不可变序列)......所以我认为我们可以定义一个非常简单的函数,如:

def frange(start,stop, step=1.0):
    while start < stop:
        yield start
        start +=step

所以:

for x in frange(0, 1, 0.05):
   print(x)

Python不需要太棘手。

如果你想要一个清单,只需致电:

list(frange(0,1,0.05))

或者更改功能以立即返回列表。

您可以使用一行乘法或做其他东西的解决方案,但使用不同的起始值和结束值可能会很棘手。 如果经常使用这种范围,只需使用该功能并重复使用即可。 即使是在代码上重复多次的单行也很糟糕。

或者这个怎​​么样:

[v*0.05 for v in range(0,int(1/0.05))]

这个怎么样:

temp = range(0,100,5) # 0,5,10,...,95
final_list = map(lambda x: x/100.0,temp) # becomes 0,0.05,0.10,...,0.95

它不是很优雅,但我从来没有费心去做一个正常的功能。 此外,它仅在步长合理时才有效。 优点是它足够快,可以在现场完成。

请参阅OP的评论,以获得更通用,更优雅的解决方案。

怎么了?

[i/100.0 for i in range(0, 100, 5)]

你检查你想要多少位数(这里是两个)并扼杀一个合适的乘数(1变为100,0.05变为5)。

1 具有float类型的步骤的范围[duplicate]

这个问题在这里已有答案: 如何使用小数范围()步长值? 33个答案 文档基本上说range必须与此实现完全相同(对于正step ): 它还说它的论点必须是整数。 这是为什么? 如果step是浮点数,那么这个定义也不完全有效吗? 就我而言,我是特别 ...

2 Python-将一个float范围(不带任何步长)作为函数的参数传递

我创建了一个函数,并且希望能够使用一组我称为**criterias的关键字参数来调用它: 在这组参数中,其中一个将称为“ SumInc”,我想向其传递一个范围。 该范围的形式为[1:15]或[1:]或[:15]。 从本质上讲,这将使我检查代码中的变量是大于某个边界还是小于另一个边界或 ...

3 浮动步的标量范围精度

我打算用0.05步从0.05到0.95生成一个数组,就像0.05, 0.1, 0.15, 0.2, ... 。 但是以下代码存在一些精度问题: 谁能给我一些关于如何解决这个问题的想法? 谢谢。 ...

2016-11-15 10:24:40 5 1536   scala
5 Python十进制range()逐步值[重复]

这个问题已经在这里有了答案: 浮点数学运算是否被破坏? 30个答案 我想检查所有满足if语句中给出条件的组合值 它正在工作,但没有给出所有组合。 ...

2016-01-02 03:33:55 1 188   python
6 返回函数值到范围参数步骤

嗨,有人可以给我一些指导吗,我假装将函数架构的值传递给一个变量,该变量将用作范围模块内的参数步骤。 我希望清楚..对不起,新手们。 经过一些试验,我得到了很好的编辑。 ...

8 将步长取决于范围将整数值转换为浮点值

我有一个滑块,可用来更改可以具有宽范围值的参数( y )。 滑块的位置以整数( x )给出。 我的参数保存一个源的能量,并且可以具有从0.1 nJ一直到10 J的值。出于应用目的,我希望参数步长为: 0.1 nJ in [0.1 nJ-1.0 µJ] 0.1 µJ in ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM