Чи є спосіб перейти між 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
), хоча я не перевіряв, що є більш ефективним