2013-03-13 153 views
2

我知道python 2to3更改所有xrangerange,我沒有看到任何問題。我的問題是關於它如何將range(...)更改爲list(range(...)):它是否是愚蠢的,只是盲目地搜索並全部替換它們,還是足夠聰明地告知何時不需要列表,並將其保留爲range會更好?2to3範圍(...) - >列表(範圍(...))

回答

3

我不知道它真的有多聰明,但它肯定不會增加list()range()

例如,以下內容:

print(range(10)) 

被改變爲:

print(list(range(10))) 

然而,以下:

for el in range(10): 
    print(el) 

被保持不變。

這清楚地表明它比盲目的搜索和替換更復雜。

+0

我注意到,如果我將名稱範圍重新綁定到其他名稱,然後在腳本中稍後使用它,它仍然會使用它。所以它不能很聰明.. – wim 2013-03-13 11:51:14

+0

@wim:在一個真正的程序中,有多麼複雜的程序員會這樣做...... – 2013-03-13 12:21:01

+0

它也打破了我的doctests,因爲它忽略了那些xranges:P – wim 2013-03-13 12:25:28