2024-03-28 19:29:37 发布
网友
显然xrange更快了,但我不知道为什么它更快了(除了目前为止的传闻之外,没有证据表明它更快了),或者除了这之外还有什么不同之处
for i in range(0, 20): for i in xrange(0, 20):
在Python 2.x中:
range创建一个列表,因此如果这样做,它将在内存中创建一个包含9999999元素的列表。
range
9999999
xrange是一个延迟计算的序列对象。
xrange
在Python 3中,range与Python的xrange等价,要获得列表,必须使用list(range(...))。
list(range(...))
range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements.xrangeis a generator, so it is a sequence object is a that evaluates lazily.
range creates a list, so if you do range(1, 10000000) it creates a list in memory with 9999999 elements.
range(1, 10000000)
xrangeis a generator, so it is a sequence object is a that evaluates lazily.
这是真的,但是在Python 3中,.range()将由Python 2.xrange()实现。如果需要实际生成列表,则需要执行以下操作:
.range()
.xrange()
list(range(1,100))
记住,使用timeit模块测试哪一小段代码更快!
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()将消失,.range()无论如何都将为您提供良好的迭代器行为。
在Python 2.x中:
range
创建一个列表,因此如果这样做,它将在内存中创建一个包含9999999
元素的列表。xrange
是一个延迟计算的序列对象。在Python 3中,
range
与Python的xrange
等价,要获得列表,必须使用list(range(...))
。这是真的,但是在Python 3中,
.range()
将由Python 2.xrange()
实现。如果需要实际生成列表,则需要执行以下操作:记住,使用
timeit
模块测试哪一小段代码更快!就我个人而言,我总是使用
.range()
,除非我处理的是真正的大型列表——从时间上看,对于一百万个条目的列表,额外的开销只有0.04秒。正如Corey所指出的,在Python 3.0中,.xrange()
将消失,.range()
无论如何都将为您提供良好的迭代器行为。相关问题 更多 >
编程相关推荐