3 回答
TA贡献1757条经验 获得超8个赞
我曾经使用过,numpy.arange但是由于浮点错误,控制返回的元素数量有些复杂。所以现在我使用linspace,例如:
>>> import numpy
>>> numpy.linspace(0, 10, num=4)
array([ 0. , 3.33333333, 6.66666667, 10. ])
TA贡献1877条经验 获得超1个赞
我不知道一个内置的功能,但是写一个像这样应该不会太复杂。
def frange(x, y, jump):
while x < y:
yield x
x += jump
如评论所述,这可能会产生不可预测的结果,例如:
>>> list(frange(0, 100, 0.1))[-1]
99.9999999999986
为了获得预期的结果,您可以使用此问题中的其他答案之一,或者如@Tadhg所述,可以将其decimal.Decimal用作jump参数。确保使用字符串而不是浮点数对其进行初始化。
>>> import decimal
>>> list(frange(0, 100, decimal.Decimal('0.1')))[-1]
Decimal('99.9')
甚至:
import decimal
def drange(x, y, jump):
while x < y:
yield float(x)
x += decimal.Decimal(jump)
接着:
>>> list(drange(0, 100, '0.1'))[-1]
99.9
TA贡献1806条经验 获得超8个赞
您可以使用:
[x / 10.0 for x in range(5, 50, 15)]
或使用lambda / map:
map(lambda x: x/10.0, range(5, 50, 15))
添加回答
举报