當前位置:成語大全網 - 書法字典 - python辭鳥博客中xrange和range的異同

python辭鳥博客中xrange和range的異同

Range返回包含所有元素的列表,xrange返回生成器,它是壹個叠代對象。叠代生成器時,元素是壹個接壹個創建的。壹般來說,當叠代壹個大序列時,由於其特性,它將節省更多的內存。

讓我們仔細看看兩者的區別:

& 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

破裂

叠代兩次,每次從第壹個元素開始。....

寫了很多,也加深了理解。* * *壹起學習!