Existe uma maneira de alternar entre 0 e 1 por 0,1?
Eu pensei que poderia fazê-lo da seguinte forma, mas falhou:
for i in range(0, 1, 0.1):
print i
Em vez disso, diz que o argumento step não pode ser zero, o que eu não esperava.
itertools.takewhile
e itertools.count
. drange
Porém, não é melhor do que o desempenho.
seq
ferramenta GNU coreutils permite fazer seq 0 0.1 1
sem erros de arredondamento!
seq
usa o long double
tipo C internamente e está sujeito a erros de arredondamento. Por exemplo, na minha máquina, seq 0 0.1 1
fornece 1
como última saída (conforme o esperado), mas seq 1 0.1 2
fornece 1.9
como a última saída (ao invés do esperado 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
ou itertools.islice(itertools.count(0,0.1), 10)
(depois de ter import itertools
), embora eu não tenha testado que é mais eficiente