最近,我开始使用Python3,它缺少xrange的好处。
简单的例子:
1) Python2:
from time import time as t
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print et-st
count()
2) Python3:
from time import time as t
def xrange(x):
return iter(range(x))
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print (et-st)
count()
结果分别是:
1) 1.53888392448 2) 3.215819835662842
这是为什么?我的意思是,为什么xrange被删除了?这是学习的好工具。对于初学者来说,就像我自己一样,就像我们都处在某个时刻。为什么要删除它?有人可以指出我正确的PEP,我找不到它。
干杯。
time
。除了更易于使用和更难以出错之外,并为您重复测试,还timeit
可以处理各种您不会记住的事情,甚至不知道如何处理(例如禁用GC),并且可以使用时钟具有数千倍的更好分辨率。
range
时间x%4 == 0
?为什么不只是测试list(xrange())
vs. list(range())
,所以尽量减少多余的工作?(例如,您怎么知道3.x的运行x%4
速度不是很慢?)为此,您为什么要构建一个庞大的list
,其中涉及大量的内存分配(除了速度较慢之外,它的变化也令人难以置信) ?
iter(range)
是多余的。
list(range(..))
。这相当于python 2的范围。或者说另一种方式:xrange已被重命名为range,因为它是更好的默认值。list(range)
如果确实需要列表,则不必同时使用两者。。
range
Python 3.x中的代码xrange
来自Python2.x。实际上range
是删除了Python2.x 。