Learning Python : 3. iterator 迭代器

来源:互联网 发布:复杂网络画图工具 编辑:程序博客网 时间:2024/05/18 00:41

A. 一个类里面,如果实现了  __iter__ 这个函数, 那这个类就是 “可迭代的”

B. 如果它还实现了 next ( self ) ,那它就称为  迭代器


举一个简单的例子:

先上代码:

__metaclass__ = type class Fibs() :    def __init__ ( self ) :        self.a = 0        self.b = 1    def next ( self ) :        self.a , self.b = self.b , self.a+self.b        return self    def __iter__ ( self ) :        return self 


注意 next 函数 定义了 递进 的规则 ,并返回 self ( !!! )。

而 __iter__ 则直接返回 self , 源码里对于这个是怎么解释, 好想知道,求解。 或许哪天得找源码来看看。


这就定义了一个 迭代器。

然后可以看看它的元素。

fibs = Fibs()for f in fibs :    print f.a ,     if f.a > 30 :        break

结果是:

lam ~/pycode $ python2 iter.py 1 1 2 3 5 8 13 21 34

有木有注意到。 第0个元素( init 的 那个 ) 不见了。

所以迭代器不能拿到第0个(初始)的元素,是吧。

不明觉厉,感觉应该是迭代器本身就是通过 next 来拿到元素, 初始元素当然拿不到。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三角部位太鼓的怎么办 美利车车贷逾期怎么办? 外墙保温层坏了怎么办 双胞胎34周血压高怎么办 夏天穿凉鞋脚后跟干裂起硬皮怎么办 穿凉鞋脚后跟干裂起硬皮怎么办 夏天穿凉鞋磨脚怎么办 lv皮带黑色掉漆怎么办 黑色衣服穿在身上掉色怎么办 电信卡流量超了怎么办 移动卡流量超了怎么办 狗狗老是挠痒痒怎么办 出差同住的同事睡觉打鼾怎么办 小孩皮肤太黑了怎么办 苹果平板突然黑屏打不开怎么办 孩子认人晚上哭怎么办 主腹动脉有硬块怎么办 糖链抗原125偏高怎么办 狗长了个肿瘤怎么办 腺肌瘤糖类抗原125升高怎么办 糖类抗原724单项升高怎么办? 化疗期间糖类抗原升高怎么办? 门面租客到期不搬怎么办 这几天老想初恋怎么办 结婚了还想初恋怎么办 九年了想初恋了怎么办 吃肥肉恶心想吐怎么办 宝宝吃了母乳不吃奶粉怎么办 母猫的奶少怎么办 鲤鱼打挺起不来怎么办 练不会鲤鱼打挺怎么办 鲤鱼打挺脖子痛怎么办 新买的沙发太高怎么办 额最后离开公司没人关灯怎么办 看到我妹妹就烦怎么办 野塘钓鱼不开口怎么办 团关系找不到接收地怎么办 两岁宝宝就是不肯说话怎么办 两岁宝宝不肯吃药怎么办 并蹄莲叶子大黄怎么办 异地恋见面来大姨妈怎么办