python培训 第三课,容器、迭代器、生成器

容器(container

容器是一种把多个元素组织在一起的数据结构,容器中的元素可以迭代获取,可用in, not in关键字判断元素是否包含在容器中。在Python中,常见的容器对象有:list(列表),set(集合),dict(字典),tuple(元组),str(字符串)(也有相关资料说str是原子类型数据,不属于容器范畴)等。

可迭代对象(iterable

很多容器都是可迭代对象,此外还有更多的对象同样也是可迭代对象,比如处于打开状态的filessockets等等。但凡是可以返回一个迭代器的对象都可称之为可迭代对象。

原理

  1. 生成这个可迭代对象(实现了__iter__方法的就叫可迭代对象)的迭代器(xx.__iter__())。
  2. 用迭代器协议(实现了__next__方法)去不断访问对象,捕捉到StopIteration就停止迭代。

好处

for循环遵循迭代器协议去访问对象,这样统一了访问接口,更加通用(这也是协议的好处)。

可以使用isinstance()判断一个对象是否是可迭代对象

可以自己创建一个容器,实现了迭代器协议,可以通过for,next方法进行迭代,在迭代的末尾,会引发stopIteration异常。

要创建一个生成器,有很多种方法。

第一种⽅法很简单,只要把一个列表生成式的 [ ] 改成 ( )

第二种通过yield语句快速生成迭代器,可以不用iter和next方法

唤醒生成器

使用next()函数来唤醒生成器继续执行外,还可以使用send()函数来唤醒执行。使用send()函数的一个好处是可以在唤醒的同时向断点处传入一个附加数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值