如何在Python中正确使用迭代器? Python初学者

我正在尝试澄清对__iter__()__next__()方法的使用的困惑。这是阅读中提供的示例:

创建一个返回数字(从1开始)的迭代器,每个序列将增加一个(返回1,2,3,4,5等):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

我试图在这里学习一般模式,并被myiter = iter(myclass)所迷惑。首先创建对象myclass,该对象属于类MyNumbers。这我明白。

问:但是定义myiter的方式是怎么回事?这是一个新对象myiter,其设置为等于我没有看到的iter函数,并且包含整个类作为参数?究竟如何运作?该读物进一步建议这些迭代方法类似于__init__,但我看不到这种关系。解释器如何准确地执行此代码?

非常感谢您的时间和帮助。

masycq 回答:如何在Python中正确使用迭代器? Python初学者

首先,您不是在“将分类作为参数传递”。 myclass不是类,它是类MyNumbers的实例。

在这种情况下,iter()对您通过的对象调用__iter__()方法,该方法是在对象的类中定义的。但是,由于您的__iter__()实现仅返回对象本身,因此对iter()的调用在这里无效。

,

首先,让我们看看可迭代迭代器

之间的区别

在我们日常的编程生活中,我们经常使用for循环。

在下面的代码段中,您可以看到sampleList是可迭代的。

sampleList = [5,8,90,1,2]
for num in sampleList:
    print num

以上语句的工作方式:(执行时for循环涉及的步骤)

  • for循环获取/接收迭代器
  • 如果迭代器具有下一个项目,则将当前索引设置为下一个可用项目的索引并执行代码语句
  • 如果迭代器没有下一个项目,则中断循环并退出循环

因此,我们现在了解了迭代器可以对下一项进行操作。

但是我们知道多少有关iterator()和iterable()函数的信息?

迭代器:     其中包含方法 iter ()和 next ()

在这里,迭代器本身会返回 iter ()。实现for num in sampleList

的主键元素

可迭代:     它包含方法 iter ()。在这里,它调用sampleList。 iter ()以获得迭代器。

现在是 next ()的定义。可迭代对象与迭代器对象之间的区别是 next ()。 next ()每次调用时都有两个操作项。

  1. 更新迭代器并将索引指向下一项
  2. 返回当前项目。
本文链接:https://www.f2er.com/3110817.html

大家都在问