Python2升級Python3(1):xrange

Ryan_Bai發表於2019-01-29

Python2升級到Python3的時候,我們會注意到xrange報錯

這時建議將xrange換成range

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> type(range(6))
<type 'list'>

python2中,range的返回值是list,這意味著記憶體將會分佈相應的長度的空間給list。

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> type(range(6))
<class 'range'>

python3中返回值是一個物件,並沒有將資料完全例項化,所以記憶體中只有一個物件的空間,對效能最佳化還是很有幫助的。

當然了你也可以在python3寫一個xrange

def xrange(x):
    n=0
    while n<x:
        yield n
        n+=1


參考:https://blog.csdn.net/mvs2008/article/details/73693012 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2565083/,如需轉載,請註明出處,否則將追究法律責任。

相關文章