|
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]
复制代码
使用 iter() 、for in 或 各种推导式,都会执行 __iter__() 方法。
- def __iter__(self):
- print('iter=> ',end='')
- self.ix = 0 # 构造迭代器时,索引置0
- return self
复制代码
|
-
-
最佳答案
查看完整内容
使用 iter() 、for in 或 各种推导式,都会执行 __iter__() 方法。
|