xrange和range的區別

2021-07-10 12:22:12 字數 951 閱讀 3515

內建函式range()返回乙個list;

xrange()返回乙個xrange物件,xrange物件是乙個generator,而且是乙個sequence

python**  

>>> type(range(10))  

'list'>  

>>> type(xrange(10))  

'xrange'>  

>>> dir(xrange)  

['__class__', '__delattr__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__str__']  

因此,當需要生成大範圍資料時(如百萬級),range會一次性的生成所有的資料,並以list形式返回,這樣就會占用大量的記憶體;而xrange是乙個generator,每次按需生成乙個值,只占用少量的記憶體空間。

通常,range和xrange經常用在for迴圈中,當for不需要遍歷所有的元素(如含有break語句),尤其只遍歷起始的少量元素時,此時xrang就有效能優勢,因為它不用像range那樣一次性地生成所有的元素,造成浪費。

shell**  

superwind@ubuntu:~$ python -m timeit 'for i in range(1000000):pass'

10 loops, best of 3: 52.6 msec per loop  

superwind@ubuntu:~$ python -m timeit 'for i in xrange(1000000):pass'

10 loops, best of 3: 28.8 msec per loop  

range和xrange的區別

range 函式說明 range start,stop step 根據start與stop指定的範圍以及step設定的步長,生成乙個序列。range示例 range 5 0,1,2,3,4 range 1 5 1,2,3,4 range 0,7,2 0,2,4,6 xrange 函式說明 用法與ra...

range和xrange的區別

只有在python2中才有xrange和range,python3中沒有xrange,並且python3中的range其實是py2中的xrange。下面說說py2的range和xrange的區別 在py2中,range得到的是乙個列表 x range 0,5 print type x 結果是list...

xrange和range的區別?

range 函式說明,range start,stop step 根據start與stop指定的範圍以及step設定的步長,生成乙個列表。xrange 函式說明,xrange 用法與 range 完全相同,所不同的是生成的不是乙個list物件,而是乙個生成器。1 range和xrange都是在迴圈中...