Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环遍历迭代器_Python_Python 3.x_Iterator - Fatal编程技术网

Python 循环遍历迭代器

Python 循环遍历迭代器,python,python-3.x,iterator,Python,Python 3.x,Iterator,对不起,如果这是一个愚蠢的问题,但我无法决定如何工作 我定义了一个迭代器,它的结构如下(稍微复杂一点,但模型可以完成这项工作): 但我怎么才能绕过去呢?我是否总是必须手动调用这些方法?还是我只是使用了错误的工具 其中一个问题是你混淆了两个概念:和 iterable定义了一个返回迭代器的\uuuuu iter\uuuu()方法, 但是没有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu()方法。迭代器依次定义 \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

对不起,如果这是一个愚蠢的问题,但我无法决定如何工作

我定义了一个迭代器,它的结构如下(稍微复杂一点,但模型可以完成这项工作):


但我怎么才能绕过去呢?我是否总是必须手动调用这些方法?还是我只是使用了错误的工具

其中一个问题是你混淆了两个概念:和 iterable定义了一个返回迭代器的
\uuuuu iter\uuuu()方法,
但是没有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
方法。迭代器依次定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
返回
self
。大概是这样的:

类Iterable(对象):
定义(自我):
返回迭代器()
类迭代器(对象):
定义初始化(自):
self.i=0
定义(自我):
回归自我
定义下一个(自我):
结果=self.i
self.i+=1
返回结果
另一种方法是将iterable的
\uuuu iter\uuuu()
方法定义为生成器函数:

类Iterable(对象):
定义(自我):
i=0
尽管如此:
产量一
i+=1

请参阅。谢谢您的链接。我刚刚意识到我给出的例子并不能很好地描述它。我将尝试编辑它。@Sven:你是如何进行语法高亮显示的?通常,语法高亮显示是自动进行的。请参见Meta。谢谢!我真的没有意识到这种差异!那么下一个方法总是返回一个值?因为我要做的是用\033[语法]打印出每个坐标的特定值(存储在dict中)。我现在不知道如何返回结果值,因为它们都应该一次返回(它们有几百个)。我上传了完整的代码(到目前为止这只是一个概念),因为我不能用我糟糕的英语来描述这个问题。如果你有多余的精力,我将非常感激。@glglglgl问题是,在处理完这些值之后,所有的值都应该再次返回,但只有在被要求时,理论上可以无限扩展。我想这正是迭代器所能做的,或者有类似的东西吗?@kyril:迭代器通常应该为某种容器定义,并且应该用于在这些容器上进行迭代。这意味着它们可以在Iterable
语法中为x启用
。它们不打算打印任何内容。@SvenMarnach好的,谢谢,我会寻找其他技术!
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)