概述
python Iterator 迭代器通俗理解
在详细介绍迭代器的内容之前,这里先介绍一下,迭代器的优点,方便大家在后续使用中,心里清楚为什么大家都推崇使用迭代器。迭代器的优点主要有:
- 迭代器是python遍历集合元素的一种强大方式。
- 可以节省大量的内存的资源。
1 第一个优点
首先从这两个优点来看迭代器的出现原因,为了更加形象描述迭代器的功能,这里以遍历一个数组为例,介绍为什么迭代器这么重要。假设有一个数组的元素如下:
l = [2,4,5,6,7]
当集合不是迭代器时,我们在编写程序时,会考虑边界条件,这在编程过程中,极易出现错误,且不易于编写。
for (i=0,i<l.size();i++):
print(l[i])
当集合时迭代器时,那么代码就可以编写如下所示,这种编码方式,很简洁,不会出现常见的边界错误。
l = [2,4,5,6,7]
for i in l:
print(i)
2 节省大量的内存
迭代器有个重要的特点,迭代器是一个可以记住遍历位置的对象,就是每次返回一个值,回到上面的例子中,假设l = [2,4,5,6,…,7]中有超过百万的数据,这时在使用时可以不将这个整个数组加载到内存中,只需依据记住的遍历位置,返回元素即可,这样就达到了节省内存的目的。
3可迭代的和迭代器区分
这两者的区别从实现角度看,区别他们是非常简单的,即:
可迭代的:只要实现__iter__
()方法的类就是可迭代的对象。
迭代器:即实现了__iter__
()方法,又实现了__next__
()方法的类,就是迭代器。
总结,
- 要想自定义一个迭代器,只需实现
__iter__
()方法和__next__
()即可。 - 可迭代对象不一定是迭代器。
- 迭代器一定是可迭代对象。
4 自定义迭代器
#%%
from collections import Iterable
from collections import Iterator
class ClassMate(object):
"""定义一个同学类"""
def __init__(self):
#定义一个保存姓名的列表
self.name = list()
self.name_num = 0
def add(self,name):
#添加姓名
self.name.append(name)
def __iter__(self):
#实现__iter__方法,返回一个迭代器对象
return self # 返回本身
def __next__(self):
#实现__next__方法,从迭代器返回下一项。
if self.name_num < len(self.name):
ret = self.name[self.name_num]
self.name_num += 1
return ret
# 抛出异常,当循环后自动结束
else:
raise StopIteration
class1 = ClassMate()
class1.add("张三")
class1.add("李四")
class1.add("王五")
class1.add("tom")
print("判断是否是可迭代的对象:", isinstance(class1,Iterable))
print("判断是否是迭代器:", isinstance(class1,Iterator))
for name in class1:
print(name)
最后
以上就是舒服硬币为你收集整理的python Iterator 迭代器通俗理解的全部内容,希望文章能够帮你解决python Iterator 迭代器通俗理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复