可迭代对象与迭代器

1. 迭代器

  • 迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复 都是基于上一 次结果而来迭代提供了一种通用的 不依赖索引 的迭代取值方式
    在这里插入图片描述
  • 可迭代对象:
    可以用 for 循环遍历的对象都是可迭代对象。
    str,list,tuple,dict,set 等都是可迭代对象。
    generator (生成器 和 yield 的生成器函数) 也是可迭代对象。
  • 判断是否可迭代
    是否有内置的__iter__方法
    isinstance(obj, Iterable)
    在这里插入图片描述
  • 迭代器
    有内置的__iter__()方法的对象,执行迭代器的__iter__()方法得到的依然是迭代 器本身
    有内置的__next__()方法的对象,执行该方法可以不依赖索引取值
    问题:可迭代的对象一定是迭代器吗? False
    在这里插入图片描述
  • iter()
    可以被 next() 函数调用并不断返回下一个值的对象称为迭代器:Iterator。那我们可 以通过 iter() 方法将可迭代的对象,转为迭代器。
  • 注意:
    迭代器不可以通过下标取值,而是使用 next() 或者 next() 。但是只要超出 范围则直接报错 StopIteration 。
    next() 只能顺延调用,不能往前。
    在这里插入图片描述
    在这里插入图片描述
  • 可迭代对象与迭代器区别
    可用于 for 循环的都是可迭代对象
    作用于 next() 都是迭代器对象
    list、dict、str 等都是可迭代的但不是迭代器,因为 next() 函数无法调用它们。
    可以通过 iter() 函数将可迭代对象 转为迭代器
    python 的 for 循环本质就是通过不断调用 next() 函数实现的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值