用yield实现range
import time
def my_range(end, step=1, start=0):
i = start
while i < end:
yield i
i = i + step
start_time = time.time()
for i in my_range(10000000):
pass
end_time = time.time()
print(end_time-start_time)
运行结果:
1.4571032524108887
循环一千万次耗时1.4s左右
如果改成range()仅耗时400ms左右