📜  Python中的range()和xrange()

📅  最后修改于: 2020-01-17 13:44:47             🧑  作者: Mango

range()和xrange()是两个函数,可用于 在Python 中的for循环中迭代一定次数。在Python 3中,没有xrange,但是range函数的行为类似于Python 2中的xrange。如果要编写将在Python 2代码在Python 3中运行,则应使用range()。
range() –返回使用range()函数创建的数字列表。
xrange() –此函数返回只能通过循环显示数字的生成器对象。根据需要仅显示特定范围,因此称为“ 惰性评估 “。
两者以不同的方式实现,并具有与之相关的不同特征。比较的要点是:

  • 返回类型
  • 记忆
  • 操作用法
  • 速度
返回类型

range()返回– 作为返回类型的列表
xrange()返回– xrange()对象。

# Python代码展示range()对比xrange()
# 使用range()
a = range(1,10000)
# 使用xrange()
x = xrange(1,10000)
# 检查a的类型
print ("range()的返回类型 : ")
print (type(a))
# 检查x的类型
print ("xrange()的返回类型 : ")
print (type(x))

输出:

range()的返回类型 :
xrange()的返回类型 :
内存

range()的返回类型是list,而xrange()是xrange()对象。

# Python代码展示内存层面range()对比xrange()
import sys
# 使用range()
a = range(1,10000)
# 使用xrange()
x = xrange(1,10000)
# 检查a的占用内存
# range() takes more memory
print ("使用range()分配的内存 : ")
print (sys.getsizeof(a))
# 检查xrange()占用内存
print ("使用xrange()分配的内 : ")
print (sys.getsizeof(x))

输出:

使用range()分配的内 :
80064
使用xrange()分配的内 :
40
Python 2使用xrange,Python3使用range,会对内存空间非常友好。

运算符用法

当range()返回列表时,可以在列表上应用所有可以应用于列表的操作。另一方面,由于xrange()返回xrange对象,因此与list相关的操作无法应用于它们,请注意这点区别。