我不知道一个内置的功能,但是写一个像这样应该不会太复杂。
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 decimaldef drange(x, y, jump): while x < y: yield float(x) x += decimal.Decimal(jump)
接着:
>>> list(drange(0, 100, '0.1'))[-1]99.9



