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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

前言

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

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

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

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

返回類型

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()創建的范圍的變量占用更多內存。其基本原因是range()的返回類型是list而xrange()是xrange()對象。

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

importsys

#用range()初始化a

a=range(1,10000)

#用xrange()初始化a

x=xrange(1,10000)

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

print("Thesizeallottedusingrange()is:")

print(sys.getsizeof(a))

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

print("Thesizeallottedusingxrange()is:")

print(sys.getsizeof(x))

輸出:

Thesizeallottedusingrange()is:

80064

Thesizeallottedusingxrange()is:

40

操作使用

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

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

#用range()初始化a

a=range(1,6)

#用xrange()初始化a

x=xrange(1,6)

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

print("Thelistafterslicingusingrangeis:")

print(a[2:5])

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

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()僅評估僅包含惰性評估所需值的生成器對象,因此在實現上比range()更快。

要點:

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

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

溫馨提示

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

評論

0/150

提交評論