__iter__与__next__ 迭代对象和迭代器
您好,我试了一下,__iter__与__next__都实现了一样的功能,那他们有什么区别,迭代对象和迭代器又是什么逻辑
26
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕笑蓉
2020-04-02 16:01:30
同学,你好。
__iter__与__next__的功能是不一样的,__iter__返回一个迭代器类的实例,__next__返回迭代的每一步数据。
实现了__iter__方法的称为可迭代对象,实现了__iter__和__next__方法的称为迭代器,因为迭代器肯定是一个可迭代对象,所以要实现__iter__方法。
__iter__和__next__的区别,以下面的代码为例:
class MyList(object): def __init__(self, num): self.data = num def __iter__(self): return MyListIterator(self.data) class MyListIterator(object): def __init__(self, data): self.data = data self.now = 0 def __iter__(self): return self def __next__(self): while self.now < self.data: self.now += 1 return self.now - 1 raise StopIteration my_list = MyList(5) print(type(my_list)) my_list_iter = my_list.__iter__() print(type(my_list_iter)) print(my_list_iter.__next__()) print(next(my_list_iter)) print(next(my_list_iter)) print(next(my_list_iter)) print(next(my_list_iter))
MyList实现了__iter__方法是可迭代对象,返回一个迭代器类的实例,MyListIterator实现了__iter__和__next__方法是为迭代器,可迭代对象MyList通过调用__iter__()方法,等价于iter(my_list),得到迭代器实例my_list_iter,my_list_iter就可以调用__next__(),等价于next(my_list_iter)实现返回迭代的每一步数据。
如果解决了你的疑惑,请采纳,祝学习愉快~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星