xrange与迭代器python之比较

2024-04-26 10:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对为什么不能将xrange()对象视为迭代器有点困惑:

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上执行for-in-loop,它也可以工作。如果xr不是迭代器,for循环如何转换?你知道吗

编辑:我看到了推荐的另一个答案,但仍然不清楚为什么xrange对象不能直接iterable。另一个答案提到xrange对象是不可变的,这是一个好处。但是不可改变和不可直接改变之间有什么联系呢?即使是一个iterable对象在我看来也是不变的,那么range对象不直接iterable的好处或原因到底是什么呢?你知道吗


Tags: 对象答案inmostforcalliterablenext