range(1000)会返回一个长度为1000的数组,
而xrange(1000)会返回一个生成器,在需要的情况下返回一个数字,此时空间的占用情况会大为减少。
所以为了提升性能,在做循环的时候,应该尽可能的使用xrange,除非需要用range返回一个数组。
In [9]: xrange(5)
Out[9]: xrange(5)
In [10]: range(5)
Out[10]: [0, 1, 2, 3, 4]
In [11]: list(xrange(5))
Out[11]: [0, 1, 2, 3, 4]
In [12]: print type(xrange(4))
<type 'xrange'>
In [13]: print type(range(4))
<type 'list'>
在使用Python3时,发现以前经常用的xrange没有了,python3的range就是xrange。
Python2中,
>>> type(range(10))
<type 'list'>
可以发现,Python2中range的返回值是list,这意味着内存将会分布相应的长度的空间给list。
Python3中,
>>> type(range(10))
<class 'range'>
Python3中返回的是一个range对象,并没有将数据完全实例化,所以内存中只有一个对象的空间。
Python3中还有类似其他的一些改动,是对Python2的优化,具体使用中需要注意!
---------------------
作者:浅笑古今
来源:CSDN
原文:https://blog.csdn.net/u012735708/article/details/81910029
版权声明:本文为博主原创文章,转载请附上博文链接!