Apakah ada cara untuk melangkah antara 0 dan 1 dengan 0,1?
Saya pikir saya bisa melakukannya seperti berikut, tetapi gagal:
for i in range(0, 1, 0.1):
print i
Sebaliknya, ia mengatakan bahwa argumen langkah tidak boleh nol, yang tidak saya harapkan.
itertools.takewhile
dan itertools.count
. Itu tidak lebih baik dari drange
segi kinerja.
seq
alat dalam GNU coreutils memungkinkan seseorang untuk melakukannya seq 0 0.1 1
tanpa kesalahan pembulatan!
seq
menggunakan C long double
jenis internal, dan adalah tunduk pada kesalahan pembulatan. Misalnya pada mesin saya, seq 0 0.1 1
berikan 1
sebagai output terakhir (seperti yang diharapkan), tetapi seq 1 0.1 2
berikan 1.9
sebagai output terakhir (bukan yang diharapkan 2
).
itertools.takewhile(lambda x: (x+0.05)<1, itertools.count(0,0.1))
atau itertools.islice(itertools.count(0,0.1), 10)
(setelah Anda miliki import itertools
), meskipun saya belum menguji mana yang lebih efisien