昨晚一小伙后臺問xrange和range有啥區(qū)別,講了下他倒領悟的挺快,其實這也是你各 面試Python崗位,經(jīng)常會遇到的 Python面試題,長個心眼哈,說不定明年3月你找工作就用上了。
創(chuàng)新互聯(lián)成立于2013年,先為乳源等服務建站,乳源等地企業(yè),進行企業(yè)商務咨詢服務。為乳源企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
廢話不多說,開始今天的 Python面試題目:
問:說說Python中xrange和range的區(qū)別?
答:range()和xrange()都是在循環(huán)中使用,輸出結果一樣。
range()返回的是一個list對象,而xrange返回的是一個生成器對象(xrange object)。
xrange()則不會直接生成一個list,而是每次調用返回其中的一個值,內存空間使用極少。因而性能非常好,所以盡量用xrange吧。
在python3 中沒有xrange,只有range。range和python2 中的xrange()一樣。
下面分別來說說這兩者的用法:
1、range()
range 函數(shù)說明:range([start,] stop[, step]),根據(jù)start與stop指定的范圍以及step設定的步長,生成一個序列。
起點是start,終點是stop,但不包含stop,公差是step。start和step是可選項,沒給出start時,從0開始;沒給出step時,默認公差為1。
range示例:
>>> range(10) #起點是0,終點是10,但是不包括10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1,10) #起點是1,終點是10,但是不包括10 [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1,10,2) #起點是1,終點是10,步長為2 [1, 3, 5, 7, 9] >>> range(0,-10,-1) #起點是1,終點是10,步長為-1 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0,-10,1) #起點是0,終點是-10,終點為負數(shù)時,步長只能為負數(shù),否則返回空 [] >>> range(0) #起點是0,返回空列表 [] >>> range(1,0) #起點大于終點,返回空列表 []
2、xrange()
xrange與range類似,只是返回的是一個"xrange object"生成器對象,而非數(shù)組list。
xrange示例:
for i in range(0, 100): print i for i in xrange(0, 100): print i
這兩個基本上都是在循環(huán)的時候用:
for i in range(0, 100): print i for i in xrange(0, 100): print i
再一次提醒:xrange()函數(shù)在Python3中已經(jīng)取消。在python3中range()這種實現(xiàn)被移除了,保留了xrange()的實現(xiàn),且將xrange()重新命名成range()。所以Python3不能使用xrange(),只能使用range()。
如果對于參考答案有不認同的,大家可以在評論區(qū)指出和補充,歡迎你們的指正留言!更多的 Python常見經(jīng)典面試題,也會繼續(xù)為大家更新!