Yum*_*Tum 2 python iterator python-3.x
对不起,如果这是一个愚蠢的问题,但我无法理解它是如何工作的.
我定义了一个具有类似结构的迭代器(它有点复杂,但模型可以完成这项工作):
class MyIterator ():
def __init__(self):
print ('nothing happening here')
def __iter__ (self):
self.a_list=[x for x in range (10)]
for y in a_list:
print(y)
def __next__ (self):
self.a_list = [x+1 for x in self.a_list]
for y in a_list:
print (y)
Run Code Online (Sandbox Code Playgroud)
但是我怎么能循环呢?我是否总是需要手动调用方法?或者我只是使用错误的工具?
其中一个问题是你混合了两个概念:
iterable定义了一个__iter__()返回迭代器但没有__next__()方法的方法.一个迭代器反过来定义了
__next__()方法,以及琐碎__iter__()实现,它返回self.像这样的东西:
class Iterable(object):
def __iter__(self):
return Iterator()
class Iterator(object):
def __init__(self):
self.i = 0
def __iter__(self):
return self
def __next__(self):
result = self.i
self.i += 1
return result
Run Code Online (Sandbox Code Playgroud)
另一种__iter__()方法是将iterable 的方法定义为生成器函数:
class Iterable(object):
def __iter__(self):
i = 0
while True:
yield i
i += 1
Run Code Online (Sandbox Code Playgroud)