鱼C论坛

 找回密码
 立即注册
查看: 1659|回复: 1

[已解决]关于多个迭代器对象的问题

[复制链接]
发表于 2017-9-14 22:00:02 | 显示全部楼层 |阅读模式
5鱼币
名为“1”的图,是一个迭代器,因为__iter__只循环一次,而不是多次。所以结果是正确的。
名为“2”的图,是一个迭代器,不知道什么原因它有多个迭代器的对象,能解释一下吗,谢谢大神。
class SkipObject:
    def __init__(self, wrapped):
        self.wrapped = wrapped
        self.offset = 0
    def __iter__(self):
        return self
    def __next__(self):
        if self.offset >= len(self.wrapped):
            raise StopIteration
        else:
            item = self.wrapped[self.offset]
            self.offset +=2
            return item
if __name__ == '__main__':
    alpha = 'abcdef'
    skipper = SkipObject(alpha)
    I = iter(skipper)
    print(next (I))

    for x in skipper:
        for y in skipper:
            print(x+y, end=' ')

#输出答案:a
          #ce
--------------------------------------------------------------------------------------
class Iters:
    def __init__(self, value):
        self.data = value
    def __iter__(self):
        print('iter=> ',end='')
        self.ix = 0
        return self
    def __next__(self):
        print('next:',end='')
        if self.ix == len(self.data):raise StopIteration
        item = self.data[self.ix]
        self.ix +=1
        return item
a = Iters([1, 2,3,4,5])
for i in a :
    print(i, end=' | ')

print()
print([i ** 2 for i in a])
    
#输出结果:iter=> next:1 | next:2 | next:3 | next:4 | next:5 | next:
          #iter=> next:next:next:next:next:next:[1, 4, 9, 16, 25]
最佳答案
2017-9-14 22:00:03
使用 iter() 、for in 或 各种推导式,都会执行 __iter__() 方法。
    def __iter__(self):
        print('iter=> ',end='')
        self.ix = 0 # 构造迭代器时,索引置0
        return self
1.png
2.jpg

最佳答案

查看完整内容

使用 iter() 、for in 或 各种推导式,都会执行 __iter__() 方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 22:00:03 | 显示全部楼层    本楼为最佳答案   
使用 iter() 、for in 或 各种推导式,都会执行 __iter__() 方法。
    def __iter__(self):
        print('iter=> ',end='')
        self.ix = 0 # 构造迭代器时,索引置0
        return self
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-17 13:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表