对于性能而言,尤其是在较大范围内进行迭代时,
xrange()通常会更好。但是,在某些情况下,你可能更喜欢
range():
在Python 3,range()做什么
xrange()
用做的,xrange()
不存在。如果要编写可在Python 2和Python 3上运行的代码,则不能使用xrange()
。range()
在某些情况下实际上可以更快-例如。如果多次重复相同的序列。 xrange()每次都必须重新构造整数对象,但是range()将拥有真正的整数对象。(但是,在内存方面,它总是会表现得更差)xrange()
在需要真实列表的所有情况下都不可用。例如,它不支持切片或任何列表方法。
[编辑]有
range()几篇文章提到2to3工具将如何升级。为了记录在案,这里是对一些用法示例运行该工具的输出
range()和
xrange()
RefactoringTool: Skipping implicit fixer: bufferRefactoringTool: Skipping implicit fixer: idiomsRefactoringTool: Skipping implicit fixer: ws_comma--- range_test.py (original)+++ range_test.py (refactored)@@ -1,7 +1,7 @@ for x in range(20):- a=range(20)+ a=list(range(20)) b=list(range(20)) c=[x for x in range(20)] d=(x for x in range(20))- e=xrange(20)+ e=range(20)
如你所见,当在for循环或理解中使用时,或已经用list()包装的地方,范围保持不变。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)