python 中的迭代对象和迭代器

概念

  • 迭代:是访问集合的一种方式
  • 迭代器:是一个可以记住遍历位置的对象 (Iterator)
  • 可迭代对象 :能够迭代的对象 (列表,字典,元组,字符串,集合)(Iterable)

具有__iter__方法的对象是可迭代对象

from collections.abc  import Iterable   #引入Iterable模块(判断对象是否为可迭代对象)
class Mylist(object):
	 """可迭代对象类"""
	def __init__(self):
	"""实例对象属性的初始化和赋值"""
		self.list=[]
		
	def add(self,item):
		"""实例方法"""
		self.list.append(item)

	def __iter__(self):
		"""  具有这个方法的才是迭代器"""
		return self


if __name__ =="__main__":
	alist=Mylist()
	alist.add(1)
	alist.add(2)
	alist.add(3)
	alist.add(4)
	alist.add(5)
	print(alist)    #[1, 2, 3, 4, 6]
	print(isinstance(alist,Iterable))   #True

具有__iter__方法和__next__方法的对象是迭代器

class Iterator(object):
    """迭代器类"""
    def __init__(self,mylist):
        self.mylist=mylist  #迭代器需要传入一个可迭代对象,这里用列表
        self.current =0     #迭代器需要记录是否遍历完整个列表

    def __iter__(self):
        """iter方法也是一个迭代器,所以要返回自身"""
        return self

    def __next__(self):
        """获取下一个迭代器元素"""
        if self.current<len(self.mylist):   #判断此时获取的元素下标是否存在
            item =self.mylist[self.current]   #存在 取得此时对应的元素
            self.current+=1                   # 并获取下一个元素的下标
        else:
            raise  StopIteration            #当此时的下标不存在时,说明迭代对象遍历完成,抛出迭代异常
        return item

if __name__ == '__main__':
    alist=[1,2,3,4,5,6]
    iterator =Iterator(alist)
    for i in iterator:
        print(i,end=" ")   #1 2 3 4 5 6 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值