Python:Iterable和Iterator
2024-10-19 09:34:03
转于:https://blog.csdn.net/whgqgq/article/details/63685066
博主:gongqi1992
iterable和iterator最基本的区别:
iterable是一个迭代器对象,包含一个__iter__或__getitem__方法,__iter__方法会返回一个iterator对象。通常可以使用isinstance(e,collection.Iterable)
方法判断一个对象e是否是可迭代的。__iter__方法需要返回一个iterator,也就是说这个方法需要被重写。例如:
class AIterable:
def __iter__(self):
return iter([1, 2, 3])
it = AIterable()
for i in it:
print("current item is: " + str(i))
运行结果为: current item is: 1
current item is: 2
current item is: 3
定义了一个iterable类,这个类含有一个__iter__方法,并且这个方法返回一个iterator。
*注:iter是Python的build-in函数,返回一个iterator。
iterator是一个可迭代对象。该对象的类必须实现next(Python2.x)或__next__(python3.x)方法。例如:
class AIterator:
def __init__(self, s, e):
self.current = s
self.end = e
def __iter__(self):
return self
def __next__(self):
if self.current < self.end:
self.index = self.current
self.current += 1
return self.index
else:
raise StopIteration
it = AIterator(1,10)
for i in it:
print(i,end=' ')
运行结果为:
1 2 3 4 5 6 7 8 9
由此可见,当调用for…in循环时,当in后面的对象是一个iterator时,则运行next()方法直到遇到StopIteration异常。同样,对于iterable对象,则先调用__iter__方法返回一个iterator,执行之前的操作步骤即可。
for…in语句的等价实现:
for i in [1,2,3,4,5]:
print(i,end=' ')
运行结果:1 2 3 4 5
上述代码等价于:
it = iter([1,2,3,4,5])
while True:
try:
print(next(it),end=' ')
except StopIteration:
break;
运行结果:1 2 3 4 5
最新文章
- runtime第三部分方法和消息
- Don&#39;t let self-built concept imprison yourself
- 《Python算法教程》译者序
- radio被选中,但是重复点击后事件不触发
- unbutu下搭建FTP服务
- centos查看磁盘扇区大小等信息
- delphi 去掉TreeView水平滚动条
- 今天碰到的angular 中的一个小坑
- LintCode-乱序字符串
- selenium登录163邮箱
- PAT甲级1022 Digital Library
- [大数据面试题]hadoop核心知识点
- 2017-9-10";切题如切菜杯";模拟赛T4 ZZI
- PHP : MySQLi【面向过程】操作数据库【 连接、建库、建表、增、删、改、查、关闭】
- dva-counter
- Javascript高级编程学习笔记(51)—— DOM2和DOM3(3)操作样式表
- js获取谷歌浏览器版本
- 9-(基础入门篇)云端安装MQTT服务器
- 删除string类型字符串中指定字符串段
- Linux-(chgrp,chown,chmod)