Python 2.X中的range和xrange函数有什么区别?

显然xrange更快,但我不知道为什么它更快(除了迄今为止的轶事更快),或者除此之外还有什么不同

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

范围会创建一个列表,所以如果您使用range(1, 10000000)它会在内存中创建一个包含9999999元素的列表。

xrange是一个懒惰评估的序列对象。

它应该从@ Thiago的提示中加入,在python3中,范围相当于python的xrange


范围会创建一个列表,所以如果您使用range(1, 10000000)它会在内存中创建一个包含9999999元素的列表。

xrange是一个生成器,所以它是一个序列对象是一个懒惰地评估的对象。

这是真的,但在Python 3中,范围将由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指出的那样,在Python 3.0中,xrange将消失,范围无论如何都会给你带来不错的迭代器行为。

链接地址: http://www.djcxy.com/p/4097.html

上一篇: What is the difference between range and xrange functions in Python 2.X?

下一篇: Iterating over all the keys of a map