天天看點

Python中的range和xrange的說明

這兩個基本上都是在循環的時候用。

range函數傳回的是一個清單,而xrange傳回的是一個不可改變的XRangeType對象。這是一個疊代器,也就是隻有用到那個數時才臨時通過計算提供值。當參數很大時,xrange能夠有效地利用記憶體。

>>> rg = range(0,10)

>>> type(rg)
list

>>> for i in rg:
   ....:     print i
   ....: 
0
1
2
3
4
5
6
7
8
9

>>> xrg = xrange(0,10)

>>> type(xrg)
xrange

>>> for i in xrg:
   ....:     print i
   ....: 
0
1
2
3
4
5
6
7
8
9
           
>>> for i in range(10000000):
  ....       print i
由于list占用記憶體太大,系統無法配置設定足夠大的記憶體,執行會出錯

>>> for i in xrange(10000000):
  ...        print i
1
2
...
10000000
           

是以xrange做循環的性能比range好,尤其是傳回很大的時候,所有如果不是非要獲得一個清單,應該盡量用xrange。

類似的還有f.readlines()和f.xreadlines()兩個函數。

其中f.readlines()讀取所有的行并傳回一個包含所有行的清單,而f.xreadlines函數傳回一個疊代器,每次疊代傳回檔案的一個新行。