为了账号安全,请及时绑定邮箱和手机立即绑定

Python2.x中的范围函数和xrange函数有什么区别?

Python2.x中的范围函数和xrange函数有什么区别?

守候你守候我 2019-06-21 13:46:58
Python2.x中的范围函数和xrange函数有什么区别?显然xrange更快,但我不知道它为什么更快(除了目前为止的传闻之外,没有证据证明它更快),或者除了这一点之外还有什么不同之处。for i in range(0, 20):for i in xrange(0, 20):
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

Range会创建一个列表,所以如果您这样做了range(1, 10000000)它在内存中创建一个列表9999999元素。

xrange 是个发电机,所以是序列对象。懒惰的评价。

这是真的,但是在Python 3中,.range()将由Python 2实现。.xrange()..如果需要实际生成列表,则需要:

list(range(1,100))


查看完整回答
反对 回复 2019-06-21
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

记住,使用timeit模块测试哪个小片段的代码更快!

$ python -m timeit 'for i in range(1000000):' ' pass'10 loops, best of 3: 90.5 msec per loop
$ python -m timeit 'for i in xrange(1000000):' ' pass'10 loops, best of 3: 51.1 msec per loop

就我个人而言,我总是用.range(),除非我是在处理真的巨大的列表-正如你所看到的,就时间而言,对于一个百万条目的列表,额外的开销仅为0.04秒。正如Corey指出的,在Python3.0中.xrange()就会消失.range()会给你很好的迭代行为。


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 583 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信