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