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.takewhilevà itertools.count. drangeMặc dù vậy, nó không tốt hơn hiệu suất.
seqcông cụ trong GNU coreutils cho phép một người làm seq 0 0.1 1mà không làm tròn lỗi!
seqsử dụng long doubleloạ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 1là đầu ra cuối cùng của nó (như mong đợi), nhưng seq 1 0.1 2đưa ra 1.9là đầ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