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?