自定义迭代器方法

写一个迭代器的类

迭代一个数组或者字符串,考虑要有next()方法,要有[Symbol.iterator]属性等。

class demoIterator {
  constructor(param) {
	this.count = 0;
	this.arr = param;
	this.limit = param.length;
  }
  next() {
	if (this.count <= this.limit) {
	  return { done: false, value: this.param[this.count] };
	} else {
	  return { done: true, value: undefined }
	}
  }	
  [Symbol.iterator]() {
    return this;
  }
}

这样的迭代器只能迭代一个实例,为了让一个可迭代对象能够创建多个迭代器,必须每创建一个迭代器就对应一个新计数器。为此, 可以把计数器变量放到闭包里,然后通过闭包返回迭代

class demoIterator {
  constructor(param) {
	this.arr = param;
	this.limit = param.length;
  }
 [Symbol.iterator]() { 
   let count = 0,
   limit = this.limit; 
   return {
     next() {
        if (count <= limit) {
          return { done: false, value: this.arr[count] };
        } else {
          return { done: true, value: undefined };
        }
	 } 
    };
  } 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 自定义迭代器是指通过编写自定义方法,实现对对象的迭代访问和遍历。在这个过程中,我们可以使用 __iter__ 和 __next__ 这两个特殊的方法来实现迭代器的定义。 首先,我们需要创建一个自定义,并在这个中定义 __iter__ 和 __next__ 这两个方法。在 __iter__ 方法中,我们可以对迭代器进行初始化,并返回一个可迭代对象。在 __next__ 方法中,我们可以定义迭代器的遍历逻辑,并返回下一个元素。 以一个示例来说明,假设我们要创建一个自定义迭代器来遍历一个列表中的元素,我们可以这样实现: ```python class MyIterator: def __init__(self, data): self.data = data self.index = 0 def __iter__(self): return self def __next__(self): if self.index < len(self.data): value = self.data[self.index] self.index += 1 return value else: raise StopIteration ``` 通过上面的代码,我们创建了一个名为 MyIterator 的自定义迭代器,并实现了 __iter__ 和 __next__ 方法。在 __init__ 方法中,我们对迭代器进行了初始化,并指定了需要遍历的列表数据。在 __next__ 方法中,我们定义了迭代器的遍历逻辑,并实现了对列表中元素的遍历。 最后,我们可以通过使用 for 循环或者调用 next() 方法来使用这个自定义迭代器,例如: ```python data = [1, 2, 3, 4, 5] my_iterator = MyIterator(data) for value in my_iterator: print(value) ``` 以上就是关于 Python 自定义迭代器的一些基本介绍和示例,希望可以帮助到你。如果想要深入了解更多内容,可以参考 CSDN 等相关平台上的文档和教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值