Có cách nào để bước giữa 0 và 1 bằng 0,1 không?
Tôi nghĩ rằng tôi có thể làm điều đó như sau, nhưng nó đã thất bại:
for i in range(0, 1, 0.1):
print i
Thay vào đó, nó nói rằng đối số bước không thể bằng 0, điều mà tôi không mong đợi.
itertools.takewhile
và itertools.count
. drange
Mặc dù vậy, nó không tốt hơn hiệu suất.
seq
công cụ trong GNU coreutils cho phép một người làm seq 0 0.1 1
mà không làm tròn lỗi!
seq
sử dụng long double
loại C trong nội bộ và có thể bị lỗi làm tròn. Ví dụ trên máy của tôi, seq 0 0.1 1
đưa ra 1
là đầu ra cuối cùng của nó (như mong đợi), nhưng seq 1 0.1 2
đưa ra 1.9
là đầu ra cuối cùng (chứ không phải là dự kiến 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
hoặc itertools.islice(itertools.count(0,0.1), 10)
(sau khi bạn có import itertools
), mặc dù tôi chưa thử nghiệm hiệu quả hơn