我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]

Posted

技术标签:

【中文标题】我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]【英文标题】:I want to create simple list [0, 0.05, 0.10, 0.15,.....,1.00] using while loop in python 【发布时间】:2019-10-18 18:51:53 【问题描述】:

我想在 python 中创建一个 while 循环,它将输出作为列表 [0.00, 0.05, 0.10, 0.15,...., 1.00]

我尝试了以下方法:

alpha=0

alphalist=list()
while alpha<=1:
    alphalist.append(alpha)
    alpha+=0.05

print(alphalist)

我得到的输出为[0,0.05,0.1 0.15000000000000002,0.2%,0.25%,0.3%0.35,0.39999999999999997,0.44999999999999996,0.49999999999999994,0.5499999999999999,0.6%,0.65,0.7000000000000001,0.7500000000000001,0.8000000000000002,0.8500000000000002,0.9000000000000002,0.9500000000000003]

但我想要的是:[0.00, 0.05, 0.10, 0.15,...., 1.00]

【问题讨论】:

相关:***.com/questions/588004/… 相关:How to use a decimal range() step value? - 见this answer 【参考方案1】:

这是浮点错误的结果。 0.05 并不是真正的有理数 1/20,因此任何涉及它的算术都可能与您的预期不同。

将两个整数相除,而不是从浮点值开始,有助于缓解问题。

>>> [x/100 for x in range(0, 101, 15)]
[0.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.0]

【讨论】:

【参考方案2】:

有些数字可能会导致 floating number system computers use 不精确。你只是看到了一个例子。

如果您想以这种方式继续使用 while 循环,我会做的是添加另一行

alpha = round(alpha,2)

【讨论】:

以上是关于我想在 python 中使用 while 循环创建简单列表 [0, 0.05, 0.10, 0.15,.....,1.00]的主要内容,如果未能解决你的问题,请参考以下文章

python如何在循环中,每次循环都创建一个新的类?

HSQL查询中while循环的语法

在 Javascript 中的 while 循环内创建暂停

带有最小和最大条件Python的while循环

如何在 Python 中的另一个 while 循环中正确地创建一个 while 循环?

在 do while 循环内部,我想在 c# 中每 1 分钟执行一次特定代码,直到条件满足