Python的range和xrange
阿新 • • 發佈:2018-04-26
比較 數組 內存空間 設定 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