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

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

显然xrange更快,但我不知道它为什么更快(除了目前为止的传闻之外,没有证据证明它更快),或者除了这一点之外还有什么不同之处。

for i in range(0, 20):for i in xrange(0, 20):


守候你守候我
浏览 584回答 3
3回答

哔哔one

Range会创建一个列表,所以如果您这样做了range(1, 10000000)它在内存中创建一个列表9999999元素。xrange 是个发电机,所以是序列对象。是懒惰的评价。这是真的,但是在Python 3中,.range()将由Python 2实现。.xrange()..如果需要实际生成列表,则需要:list(range(1,100))

潇潇雨雨

记住,使用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()会给你很好的迭代行为。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python