码迷,mamicode.com
首页 > 其他好文 > 详细

问题8~9:如何实现可迭代对象和迭代器对象

时间:2018-04-06 23:43:18      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:pytho   抓取   执行   class   --   通过   方案   实现   第一个   

一)通过可迭代对象和Python内置函数iter()得到迭代器:即,iter(可迭代对象)  -->  得到一个迭代器;

例:list_1 = [1, 2, 3, 4, 5]

 

1、iter(对象),若此对象想满足迭代要求,其内部要有迭代接口或者一个序列:__iter__()或者__getitm__()

  • iter(list_1)  <==>  list_1.__iter__(),对可迭代对象执行iter()方法,就是调用list_1的内部方法__iter__(),即迭代器接口,通过__iter__()方法,生产一个迭代器,对list_1中的元素进行迭代;

 

2、迭代器只有一个接口:next(),调用next()时会自动获得生产此迭代器的对象的一个值;

t = iter(list_1)

t.next()

#输出1

  • for i in list_1:  即==> 不停的执行iter(list_1).next(),直到迭代出现异常时(StopIteration),迭代结束,返回迭代结果;
  • 迭代接口,由python软件内部赋予的功能;

 

二)案例:

 

要求:某软件要求,从网站抓取各个城市气温信息,并依次显示;

问题:如果一次抓取所有城市天气再显示,显示第一个城市气温时,有很高的演示,并且浪费存储空间;期望从‘用时访问’的策略,并且能把所有城市气温装到一个对象里,可用for语句进行迭代。如何实现?

方案:

  1. 实现一个迭代器对象WeatherIterator,next方法每次返回一个城市气温;
  2. 实现一个可迭代对象WeatherIteratble,__iter__方法返回一个迭代器对象;

 

问题8~9:如何实现可迭代对象和迭代器对象

标签:pytho   抓取   执行   class   --   通过   方案   实现   第一个   

原文地址:https://www.cnblogs.com/volcao/p/8729246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!