0
我通過我爲什麼不能這樣對待一個的xrange()對象作爲一個迭代器有點糊塗:的xrange VS迭代蟒蛇
In [47]: xr = xrange(1,7)
In [48]: next(xr)
-----------------------------------------------------------------------
----
TypeError Traceback (most recent call
last)
<ipython-input-48-e71cfa0995ec> in <module>()
----> 1 next(xr)
TypeError: xrange object is not an iterator
它的工作原理,如果的xrange()被包裹在裏面ITER()。如果我在xr中進行循環,它也可以工作。如果xr不是迭代器,for循環如何被翻譯?
編輯:我看到了推薦的其他答案,但它仍然不清楚爲什麼xrange對象不能直接迭代。另一個答案提到xrange對象是不可變的,這是一個好處。但是,不可變的,不可直接迭代的是什麼?即使一個可迭代的對象對我來說似乎是不可改變的,所以範圍對象背後的好處或原因究竟是不是直接可迭代的呢?
如果你可以調用'next',那麼這肯定意味着它有一個狀態。 'xrange'對象沒有狀態。 – SethMMorton
問題:如果我做'a = xrange(10);在a中打印5,你會期望'print list(a)'的結果是什麼? – SethMMorton