讓我們仔細看看兩者的區別:
& gt& gt& gt範圍=範圍(10)
& gt& gt& gtxRange = xRange(10)
& gt& gt& gt類型(範圍)
& lt鍵入‘list‘& gt;
& gt& gt& gt類型(xRange)
& lt鍵入‘xrange‘& gt;
這是類型上的明顯區別。range直接生成壹個列表,而xrange生成壹個xrange對象。
另壹個明顯的區別是它不支持xrange的列表切片。
& gt& gt& gtxRange【:1】
回溯(最近壹次呼叫):
文件“<pyshell#39》,第1行,in & lt模塊& gt
xRange【:1】
類型錯誤:序列索引必須是整數,而不是“切片”
在其他場合,我認為xrange可以完全取代range,因此您不必擔心列表的長度。
此外,xange與普通發電機略有不同。對於同壹個xrange對象,我叠代了很多次,每次都是從頭開始。我自己在這裏試過。
首先,編寫壹個常規生成器
& gt& gt& gt定義測試(x):
對於x中的y:
產量y
& gt& gt& gtt =測試(範圍(10))
& gt& gt& gtt.next()
& gt& gt& gtt.next()
1
& gt& gt& gtt.next()
2
& gt& gt& gt列表(t)
[3, 4, 5, 6, 7, 8, 9]
您可以看到元素在生成後被從生成器中刪除,但xrange不同。
& gt& gt& gtxRange = xRange(10)
& gt& gt& gt對於xRange中的x:
打印x
破裂
& gt& gt& gt對於xRange中的x:
打印x
破裂
叠代兩次,每次從第壹個元素開始。....
寫了很多,也加深了理解。* * *壹起學習!