Python 2.X中的range函数和xrange函数有什么区别?

2022-09-05 01:19:50

显然xrange更快,但我不知道为什么它更快(除了到目前为止的轶事之外,没有任何证据证明它更快),或者除此之外还有什么不同之处

for i in range(0, 20):
for i in xrange(0, 20):

答案 1

在 Python 2.x 中:

  • range创建一个列表,因此,如果这样做,则会在内存中创建一个包含元素的列表。range(1, 10000000)9999999

  • xrange是一个懒惰地计算的序列对象。

在 Python 3 中:

  • range相当于 Python 2 的 .要获取列表,必须显式使用 。xrangelist(range(...))
  • xrange不再存在。

答案 2

范围会创建一个列表,因此,如果这样做,则会在内存中创建一个包含元素的列表。range(1, 10000000)9999999

xrange 是一个生成器,所以它是一个序列对象,是一个懒惰地计算的对象。

这是真的,但是在Python 3中,将由Python 2实现。如果您需要实际生成列表,则需要执行以下操作:range()xrange()

list(range(1,100))

推荐