如何实现可迭代对象和迭代器对象(一)
来源:互联网 发布:cpu测温度软件 编辑:程序博客网 时间:2024/05/22 02:03
实际案例
某软件要求,从网站抓取各个城市气温信息,并依次显示:
北京:15~20
天津:17~22
长春:12~18
……
如果一次抓取所有城市天气再显示,显示第一个城市气温时,有很高的延时,并且浪费存储空间。我们期望以“用时访问”的策略,并且能把所有城市气温封装到一个对象里,可用for语句进行迭代。那么具体如何解决?
我们要实现可迭代对象和迭代对象,就先要了解什么是可迭代对象和迭代对象。为了说明这两个概念,我们先看如下代码:
l = [1, 2, 3, 4]s = 'abcd'for x in s: print xfor i in l: print i
相信大家都能看懂上述代码并能够知道该代码的输出结果。那么我们现在来分析一下代码:代码中两个for分别循环遍历列表、字符串,其实这里的两个for循环实质上是在对列表、字符串进行迭代。因此,列表和字符串这种可以可迭代的对象称为可迭代对象。
此处以列表l为例,其迭代(循环遍历)的原理为:
- 列表l实现__iter__(),返回一个迭代器,所谓的迭代器就是具有next方法的对象,即迭代器对象;
- 迭代器对象在调用next方法时,迭代器对象会返回它的下一值。如果next方法被调用,但迭代器对象没有值返回,就会引发一个StopIterration异常。
注:Python 3.X版本中,next方法变化为__next__() 。
代码演示如下:
l = [1, 2, 3, 4]# iter(l)i = l.__iter__()print i.next()print i.next()print i.next()print i.next()print i.next()
其输出结果如下:
1234Traceback (most recent call last): File "D:/Codes/imooc/Python/012.py", line 12, in <module> print i.next()StopIteration
简书个人主页:http://www.jianshu.com/u/766a46e00f6b
阅读全文
0 0
- 如何实现可迭代对象和迭代器对象(一)
- 如何实现可迭代对象和迭代器对象
- python-6-如何实现可迭代对象和迭代器对象?
- 如何实现可迭代对象和迭代器对象(二)
- python 3-1 如何实现可迭代对象iterable和迭代器对象iterator,__iter__,__getitem__
- python 3-2 如何实现可迭代对象和迭代器对象(2) BookIterable/BookIterator
- python高效编程技巧8(如何实现可迭代对象和迭代器对象)
- Python高级编程--如何实现可迭代对象和迭代器对象?(未完待续)
- 3-1 实现可迭代对象和迭代器对象
- Jimoshi_Spring 框架学习(一)--Spring实现IOC思想、javabean对象、Spring对象和对象之间关系
- 类和对象一
- 类和对象(一)
- 如何使用生成器函数实现可迭代对象
- 可迭代对象和迭代器
- python可迭代对象和迭代器对象
- PreparedStatement对象和Statement对象(一)
- JAVA 面向对象一:类和对象
- Jquery对象和Dom对象如何转换
- HDU 1875 畅通工程再续(最小生成树-Kruskal)
- hdu 2197 本原串
- 对象的继承
- 7.24欢乐爆零赛[noip模拟]
- CSU-ACM2017暑期训练1-Debug与STL C-Languages-map判重
- 如何实现可迭代对象和迭代器对象(一)
- CodeBlockes常用快捷键
- 【总结】理解欧几里德及扩展欧几里德算法
- java题1(输入三次会员)
- Ryu API Reference原文及翻译
- c++经典编程题汇总
- JAVA获取文件的MD5值
- mysql 5.6 安装和使用
- 多栏布局的设置方法