Есть ли способ перейти между 0 и 1 на 0,1?
Я думал, что смогу сделать это следующим образом, но это не удалось:
for i in range(0, 1, 0.1):
print i
Вместо этого он говорит, что аргумент шага не может быть нулем, чего я не ожидал.
itertools.takewhile
и itertools.count
. Это не лучше, чем drange
с точки зрения производительности.
seq
инструмент в GNU coreutils позволяет обходиться seq 0 0.1 1
без ошибок округления!
seq
использует C long double
тип внутренне, и это с учетом ошибок округления. Например, на моей машине, seq 0 0.1 1
дает 1
как последний вывод (как и ожидалось), но seq 1 0.1 2
дает 1.9
как последний вывод (а не ожидаемый 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
или itertools.islice(itertools.count(0,0.1), 10)
(после того, как вы это сделали import itertools
), хотя я не проверял, что является более эффективным