python中xrange和range的异同

[python] view plain copy
  1.    
  2. range  
  3.     函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。  
  4. range示例:   
  5.   
  6. 1.>>> range(5)   
  7. 2.[01234]   
  8. 3.>>> range(1,5)   
  9. 4.[1234]   
  10. 5.>>> range(0,6,2)  
  11. 6.[024]  
  12.   
  13. xrange  
  14.     函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。  
  15. xrange示例:   
  16.   
  17. 1.>>> xrange(5)  
  18. 2.xrange(5)  
  19. 3.>>> list(xrange(5))  
  20. 4.[01234]  
  21. 5.>>> xrange(1,5)  
  22. 6.xrange(15)  
  23. 7.>>> list(xrange(1,5))  
  24. 8.[1234]  
  25. 9.>>> xrange(0,6,2)  
  26. 10.xrange(062)  
  27. 11.>>> list(xrange(0,6,2))  
  28. 12.[024]  
  29.   
  30.     由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:  
  31.   
  32. 1.for i in range(0100):   
  33. 2.print i   
  34. 3.for i in xrange(0100):   
  35. 4.print i   
  36.   
  37.     这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:  
  38.   
  39. 1.a = range(0,100)   
  40. 2.print type(a)   
  41. 3.print a   
  42. 4.print a[0], a[1]   
  43.   
  44.     输出结果:  
  45.   
  46. 1.<type 'list'>  
  47. 2.[01234567891011121314151617181920212223242526,.. ,99]  
[python] view plain copy
  1.     而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:  
  2.   
  3. 1.a = xrange(0,100)   
  4. 2.print type(a)   
  5. 3.print a   
  6. 4.print a[0], a[1]   
  7.   
  8.     输出结果:  
  9.   
  10. 1.<type 'xrange'>  
  11. 2.xrange(100)  
  12. 3.0 1  
  13.   
  14.     所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值