1. 程式人生 > >Python的range和xrange

Python的range和xrange

比較 數組 內存空間 設定 start 步長 range stop 而是

range

函數說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成一個序列。

range示例:

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

xrange

函數說明:語法上和range完全相同,所不同的是生成的不是一個數組,而是一個生成器。
xrange示例:

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

range和xrange都在循環時用的比較多,下面來分析一下他們在循環裏面的各自表現:

如果循環時用range,由上面結果我們也可以看出,上來就會生成一個數組。若是元素個數少還可以接受,但是如果元素個數非常多,那豈不是要開辟很大的內存來存放這個數組?這對讓內存空間亞歷山大呀。

如果使用xrange,xrange返回的是一個生成器,一邊循環一邊計算,每次只返回一個值,這樣就不必開辟這麽大的內存空間了。

因此,在循環裏盡量使用xrange吧,隨著元素個數增多,xrange性能要比range好的多。

註意,在python3.x中,xrange被廢除了,range功能跟xrange相同。

Python的range和xrange