27迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了27迭代器相关的知识,希望对你有一定的参考价值。

可迭代对象具有一个iter()方法,可迭代对象调用__iter__()方法以后返回一个迭代器对象。也就是说一个迭代器  具有iter 和next方法

以列表为例 a = [1,2,3,4]

     a.__iter__()   返回一个迭代器对象

     a.__iter__().__next__()  就可以进行迭代

for i  in list: 的本质就是一个迭代器,它做的就是首先找到一个迭代器对象,iteration = list.__iter__(),然后 iteration.__next__()进行迭代

一个迭代器的源码:

class MyList(object):

  def __init__(self):
    self.items = []

  def add(self, item):
    self.items.append(item)

  def __iter__(self):
    my_iterator = MyIterator(self.items)
      return my_iterator

 

class MyIterator(object):
  def __init__(self, container):
    self.i = 0
    self.container = container

  def __next__(self):
    if self.i < len(self.container):
      ret = self.container[self.i]
      self.i += 1
      return ret
    else:
      raise StopIteration

my_list = MyList()   这个对象就可以就可以进行迭代

my_list.add(100)

my_list.add(200)

for i in my_list:

  print i

以上是关于27迭代器的主要内容,如果未能解决你的问题,请参考以下文章

(VIP-朝夕教育)2021-05-27 .NET高级班 11-yield迭代器的使用

Java 迭代器对 Next() 施加条件

为啥 std::variant 用开始和结束迭代器编译?

通过引用传递 C++ 迭代器有啥问题?

redshift 返回的结果集是不是支持重置迭代器?

生成器&迭代器