我为运行良好的课程编写了以下代码:
def reverse_iter(iterable):
"""Return a generator that yields items from iterable in reverse order"""
last = len(iterable) - 1
while last >= 0:
yield iterable[last]
last -= 1
作业的下一部分是将此函数转换为类。我知道这是不实际的,但它是什么被要求。我对类的知识非常有限,但我想到了以下代码:
class ReverseIter:
"""Class whose instances iterate the initial iterable in reverse order"""
def __init__(self, iterable):
self.iterable = iterable
def iterreverse(self):
last = len(self.iterable) - 1
while last >= 0:
yield self.iterable[last]
last -= 1
nums = [1, 2, 3, 4]
it = ReverseIter(nums)
print(iter(it) is it)
print(next(it) == 4)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
输出总是读取TypeError:“ReverseIter”对象不可iterable。我不知道为什么会这样。任何解释或建议都会有帮助。上述print语句的输出应分别为True、True、3、2、1、Stop迭代。你知道吗
如果一个对象有一个
__next__
方法,那么它就是一个iterator,这个方法被调用来获取下一个项目(当它用完时应该引发StopIteration
),而__iter__
返回一个迭代器(通常只是self
)必须实现
__next__
方法,如下所示。你知道吗相关问题 更多 >
编程相关推荐