¿Hay alguna manera de pasar de 0 a 1 por 0.1?
Pensé que podría hacerlo de la siguiente manera, pero falló:
for i in range(0, 1, 0.1):
print i
En cambio, dice que el argumento paso no puede ser cero, lo cual no esperaba.
itertools.takewhile
y itertools.count
. Sin drange
embargo, no es mejor que el rendimiento.
seq
herramienta en GNU coreutils le permite a uno hacerlo seq 0 0.1 1
sin errores de redondeo!
seq
utiliza el long double
tipo C internamente y está sujeto a errores de redondeo. Por ejemplo, en mi máquina, seq 0 0.1 1
da 1
como su última salida (como se esperaba), pero seq 1 0.1 2
da 1.9
como la última salida (en lugar de la esperada 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
o itertools.islice(itertools.count(0,0.1), 10)
(después de que lo haya hecho import itertools
), aunque no he probado cuál es más eficiente