มีวิธีการก้าวระหว่าง 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
ใช้ซี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
) แต่ฉันยังไม่ได้ทดสอบที่มีประสิทธิภาพมากขึ้น