Gibt es eine Möglichkeit, um 0,1 zwischen 0 und 1 zu wechseln?
Ich dachte, ich könnte es wie folgt machen, aber es schlug fehl:
for i in range(0, 1, 0.1):
print i
Stattdessen heißt es, dass das Schrittargument nicht Null sein kann, was ich nicht erwartet hatte.
itertools.takewhile
und aufgerollt werden itertools.count
. Es ist jedoch nicht besser als die drange
Leistung.
seq
Tool in GNU Coreutils kann man auf seq 0 0.1 1
Rundungsfehler verzichten!
seq
verwendet den C - long double
Typen intern und ist Gegenstand von Rundungsfehlern. Zum Beispiel auf meiner Maschine, seq 0 0.1 1
gibt 1
als letzte Ausgabe (wie erwartet), sondern seq 1 0.1 2
gibt 1.9
als letzte Ausgabe ( und nicht den erwarteten 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
oder itertools.islice(itertools.count(0,0.1), 10)
(nachdem Sie dies getan haben import itertools
) implementiert werden , obwohl ich nicht getestet habe, was effizienter ist