推荐答案

对于性能,尤其是在大范围迭代时,xrange()通常更好.然而,仍然有一些情况下你可能更喜欢range():

  • 在Python3中,range()xrange()以前做的事情,而xrange()不存在.如果您想编写同时在Python2和Python3上运行的代码,就不能使用xrange().

  • 在某些情况下,range()实际上可以更快——例如,如果在同一序列上重复多次.xrange()必须每次重建整数对象,但range()将有真正的整数对象.(但在记忆方面,它的表现总是更差)

  • xrange()并不适用于所有需要真实列表的情况.例如,它不支持切片或任何列表方法.

[编辑]有几篇帖子提到2to3工具将如何升级range().为了记录起见,以下是针对range()xrange()的一些示例用法运行该工具的输出

RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: 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循环或comprehension中使用时,或者在已经用list()包装的地方,range保持不变.

Python相关问答推荐

Python中是否有方法从公共域检索搜索结果

jit JAX函数中的迭代器

如何根据另一列值用字典中的值替换列值

使用mySQL的SQlalchemy过滤重叠时间段

如何将ctyles.POINTER(ctyles.c_float)转换为int?

'discord.ext. commanders.cog没有属性监听器'

cv2.matchTemplate函数匹配失败

如何更新pandas DataFrame上列标题的de值?

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

找到相对于列表索引的当前最大值列表""

如何在Python中使用Iscolc迭代器实现观察者模式?

从源代码显示不同的输出(机器学习)(Python)

用两个字符串构建回文

Python将一个列值分割成多个列,并保持其余列相同

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

如何获得满足掩码条件的第一行的索引?

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

python3中np. divide(x,y)和x/y有什么区别?'

在matplotlib中重叠极 map 以创建径向龙卷风图