Python入门(十一)——迭代器

1 迭代器简介

需要明白几个概念

  • 容器(container):一种把多个元素组织在一起的数据结构,可迭代,可用 in, not in进行判断。可迭代是因为它是可迭代对象,并不是容器本身的特性。
  • 可迭代对象(iterable):可迭代对象描述的是对象的一种状态为可迭代 iteration),可以用for循环进行迭代遍历,包括常见的dict、list、set、file、socket等
  • 迭代器(iterator):是一个带状态的对象,可用next()方法对其进行操作,并保存当前状态,就是一个懒加载的工厂,等到有人需要的时候才给它生成值返回,没调用的时候就处于休眠状态等待下一次调用。
  • 生成器(generator):是一种迭代器,具备迭代器的所有功能
  • 列表等(list,dict,set):数据的表达方式,产生容器。

在这里插入图片描述

2 迭代器判断标准

  • 有iter()方法
  • 有next()方法

3 iter() 方法

可将容器对象转换为迭代器(iterator)
只有将list、string等可迭代对象利用iter()方法转换为迭代器才具有next()方法。
在这里插入图片描述

4. for i in (iterable)的内部实现

在大多数情况下,我们不会一次次调用next方法去取值,而是通过 for i in (iterable),
在这里插入图片描述
注意:in后面的对象如果是一个迭代器,内部因为有iter方法才可以进行操作,所以,迭代器协议里面有iter和next两个方法,否则for语句无法应用。

for循环内部三件事:
1.用iter()转换为迭代器
2.调用next()
3.处理StopIteration

for i in range10):
        print(i)     :定时垃圾回收机制:没有引用指向这个对象,则被回收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值