python 可迭代对象与迭代器
来源:互联网 发布:android c 高级编程 编辑:程序博客网 时间:2024/06/04 23:29
可迭代的对象
使用 iter 内置函数可以获取迭代器的对象。 如果对象实现了能返回迭代器的 __iter__ 方法, 那么对象就是可迭代的。序列都可以迭代; 实现了 __getitem__ 方法, 而且其参数是从零开始的索引, 这种对象也可以迭代。
迭代器
迭代器要实现 __next__ 方法,返回单个元素,如果没有元素了, 那么抛出 StopIteration 异常。 此外还要实现__iter__ 方法, 返回迭代器本身。因此迭代器也可以迭代。
class A: def __init__(self, data): self.data = data def __iter__(self): return AIterator(self.data) def __repr__(self):return 'A' + str(self.data) class AIterator: def __init__(self, data): self.data = data self.index = 0 def __next__(self): try: d = self.data[self.index] except IndexError: raise StopInteration() self.index += 1 return d def __iter__(self): return self>>> a = A([1,2,3,4,5,6])>>> it = iter(a)>>> next(it)1>>> next(it)2>>> next(it)3>>> aA[1, 2, 3, 4, 5, 6]
迭代器可以迭代, 但是可迭代的对象不是迭代器。
构建可迭代的对象和迭代器时经常会出现错误, 原因是混淆了二者。
可迭代的对象:有个 __iter__ 方法, 每次都实例化一个新的迭代器。可迭代的对象必须实现 __iter__ 方法, 但不能实现 __next__。为了“支持多种遍历”, 必须能从同一个可迭代的实例中获取多个独立的迭代器, 而且各个迭代器要能维护自身的内部状态。
迭代器:要实现 __next__ 方法, 返回单个元素, 此外还要实现__iter__ 方法, 返回迭代器本身
阅读全文
1 0
- Python 迭代器与可迭代对象
- python 可迭代对象与迭代器
- python之路——迭代器与可迭代对象
- Python 可迭代对象 迭代器
- python学习——可迭代对象与迭代器对象及创建迭代器的三种方式
- python对象与json
- Python: 对象与参考
- Python类与对象
- Python类与对象
- python 对象与类
- Python类与对象
- python可迭代对象和迭代器对象
- python可迭代对象和迭代器
- Python迭代器,可迭代对象,生成器
- python 可变对象与不可变对象
- python可变对象与不可变对象
- python的类与对象
- Python 与文件对象共事
- 请求被中止: 未能创建 SSL/TLS 安全通道
- jQuery报错:Uncaught ReferenceError: $ is not defined
- 剑指offer——37.数字在排序数组中出现的次数
- finereport自带的模板目录
- 数学基础01
- python 可迭代对象与迭代器
- Sublime-HTMLPrettify
- 前端面试系列(二):面试常问的几个HTML5特性
- JS数组去重的多种实现
- git提交时提示“git did not exit cleanly(exit code 128) ” 问题的解决方案
- maven项目编译报错
- Visual Studio工具箱显示自定义控件
- VS2013 编辑文件的编码格式设置 以及在工程属性设置中的关系
- HTTP 缓存