函数range()与xrange()的比较

range与xrange的比较

range

函数用法:
range(stop)
range(start,stop[,step])
函数说明:
这是一个创建包含数列的列表的通用函数。它最常用于for循环。参数必须为普通的整数。如果step参数省略,则默认为1。如果start参数省略,则默认为0。该函数的完整形式返回一个整数列表[start, start + step, start + 2 * step, …]。如果step为正,则最后一个元素start + i * step最大且小于stop;如果step为负,则最后一个元素start + i * step最小且大于stop。step必须不能为零(否则会引发ValueError)。
示例:

>>> range(10)
[0,1,2,3,4,5,6,7,8,9]
>>> range(1,11)
[1,2,3,4,5,6,7,8,9,10]
>>> range(0,30,5)
[0,5,10,15,20,25]
>>> range(0,10,3)
[0,3,6,9]
>>> range(0,-10,-1)
[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]
>>> range(0)
[]
>>> range(1,0)
[]

xrange

函数用法:
xrange(stop)
xrange(start,stop[,step])
函数说明:
该函数与range()十分相似,但返回的是xrange对象类型而不是列表。这是一个惰性的序列类型,它生成与对应的列表相同的值,但不会真正同时一起存储它们。xrange()相比range()的优势不大(因为xrange()仍然必须创建需要的值),除非在内存紧张的机器上使用一个非常大的range或这range的所有元素从不会使用(例如当循环经常被break终止)。
xrange对象类型说明
xrange类型是不可变的序列,通常用于循环。xrange类型的好处是xrange对象始终占用相同数量的内存,无论它表示的范围的大小。但它没有始终一致的性能优势。
xRange对象的行为很少:它们仅支持索引、迭代和len()函数。
示例:

>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0,1,2,3,4]
>>> xrange(1,5)
xrange(1,5)
>>> list(xrange(1,5))
[1,2,3,4]
>>> xrange(0,6,2)
xrange(0,6,2)
>>> list(xrange(0,6,2))
[0,2,4]

由上面的示例可以看出:range()与xrange()方法完全相同,基本上都是在循环的时候用:

for i in range(0,10)
    print i
for i in xrange(0,10)
    print i

而且两者输出的结果都一样,两者最大的不同点在于range()会直接生成一个list对象;xrange()生成的则是xrange对象而不是list对象,每次调用返回其中的值。

a=range(0,10)
print type(a)
print a
print a[0],a[1]

输出结果为:

<type 'list'>
[0,1,2,3,4,5,6,7,8,9]
0,1
b=xrange(0,10)
print type(b)
print b
print b[0],b[1]

输出结果为:

<type 'xrange'>
xrange(10)
0,1

如果要生成很大的数字序列,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。所以相比较来说,xrange()做循环的性能比range()要好,尤其返回很大的时候,除非你需要返回的是一个列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值