詳解Python中range()與xrange()的區(qū)別_第1頁
詳解Python中range()與xrange()的區(qū)別_第2頁
詳解Python中range()與xrange()的區(qū)別_第3頁
詳解Python中range()與xrange()的區(qū)別_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第詳解Python中range()與xrange()的區(qū)別目錄前言返回類型記憶操作使用Speed

前言

range()和xrange()是兩個函數(shù),可用于在Python的for循環(huán)中迭代一定次數(shù)。在Python3中,沒有xrange,但range函數(shù)的行為類似于Python2中的xrange。如果要編寫可在Python2和Python3上運行的代碼,則應(yīng)使用range()。

range()這將返回一個范圍對象(一種可迭代的類型)。xrange()此函數(shù)返回生成器對象,該生成器對象只能通過循環(huán)來顯示數(shù)字。唯一的特定范圍是按需顯示的,因此稱為惰性評估。

兩者都以不同的方式實現(xiàn),并具有與之相關(guān)的不同特征。比較點如下:

返回類型記憶操作使用速度

返回類型

range()返回-范圍對象。

xrange()返回xrange()對象。

#基于返回類型演示range()與xrange()的Python代碼

#用range()初始化a

a=range(1,10000)

#用xrange()初始化a

x=xrange(1,10000)

#測試a的類型

print("Thereturntypeofrange()is:")

print(type(a))

#測試x的類型

print("Thereturntypeofxrange()is:")

print(type(x))

輸出:

Thereturntypeofrange()is:

typelist

Thereturntypeofxrange()is:

typexrange

記憶

與使用xrange()存儲范圍的變量相比,存儲由range()創(chuàng)建的范圍的變量占用更多內(nèi)存。其基本原因是range()的返回類型是list而xrange()是xrange()對象。

#基于內(nèi)存演示range()與xrange()的Python代碼

importsys

#用range()初始化a

a=range(1,10000)

#用xrange()初始化a

x=xrange(1,10000)

#測試range()的大小需要更多內(nèi)存

print("Thesizeallottedusingrange()is:")

print(sys.getsizeof(a))

#測試xxrange()的大小占用更少的內(nèi)存

print("Thesizeallottedusingxrange()is:")

print(sys.getsizeof(x))

輸出:

Thesizeallottedusingrange()is:

80064

Thesizeallottedusingxrange()is:

40

操作使用

由于range()返回列表,因此可以在列表上應(yīng)用的所有操作都可以在其上使用。另一方面,由于xrange()返回xrange對象,與list關(guān)聯(lián)的操作不能應(yīng)用于它們,因此是不利的。

#根據(jù)操作使用情況演示range()與xrange()的Python代碼

#用range()初始化a

a=range(1,6)

#用xrange()初始化a

x=xrange(1,6)

#在range()打印上測試slice操作的使用沒有錯誤

print("Thelistafterslicingusingrangeis:")

print(a[2:5])

#在xrange()上測試切片操作的使用會引發(fā)錯誤

print("Thelistafterslicingusingxrangeis:")

print(x[2:5])

錯誤:

Traceback(mostrecentcalllast):

File1f2d94c59aea6aed795b05a19e44474d.py,line18,in

print(x[2:5])

TypeError:sequenceindexmustbeinteger,notslice

輸出:

Thelistafterslicingusingrangeis:

[3,4,5]

Thelistafterslicingusingxrangeis:

Speed

由于xrange()僅評估僅包含惰性評估所需值的生成器對象,因此在實現(xiàn)上比range()更快。

要點:

如果您想編寫可在Python2和Python3上運行的代碼,請使用range(),因為xrange函數(shù)在Python3中已棄用。如果多次迭代相同的序列,range()會更快。xrange()每次都必須重建整數(shù)對象,但range()將具有真正的整數(shù)對象。(然而,它在內(nèi)存方面的表現(xiàn)總是更差)

range()xrange()返回整數(shù)列表。返回一個生成器對象。執(zhí)行速度較慢執(zhí)行速度更快。占用更多內(nèi)存,因為它將整個元素列表保留在內(nèi)存中。占

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論