
it = iter([1, 2, 3])
for x in it:
print(x)
for x in [1, 2, 3]:
print(x)
答:假如给你一个列表获取其中的元素,你一定会用for循环进行遍历,然后获取你想要的元素。但是现在是一个数据爆炸的时代,假如数据特别大,那么你的计算机读取数据就要耗费大量的时间和计算机内存消耗,这时我们就会想到用python的迭代器了。迭代器的好处:你想啊,for x in [1, 2, 3]是把[1, 2, 3]罗列在内存中,等待依次被读取,迭代器不是,迭代器每次都只返回下一个数据元素,从而把所有的数据全部读取完毕。而且迭代器是可以记住数据访问的位置,从而可以快速拿到下一条元素,而且不需要把所有的列表元素给读取进来,节省了内存空间。
其次迭代器可以迭代类的实例化,我们开发中常用到类,比如把每个用户定义为User类的对象,这个时候想遍历用户的爱好,就可以用迭代器。例如:
class User:
hobbies = ['sleep', 'eat', 'play ball']
count = len(hobbies)
i = -1
def __iter__(self):
self.hobbies += ['test']
return self
def __next__(self):
if self.i < self.count:
self.i += 1
return self.hobbies[self.i]
else:
raise StopIteration
u1 = User()
it = iter(u1) # 调用u1.__iter__(self),self取u1,可见只执行一次,就当用来初始化的吧。
try :
print(next(it)) # sleep # 调用u1.__next__(self)
print(next(it)) # eat
print(next(it)) # play ball
print(next(it)) # test
print(next(it)) # raise StopIteration
except StopIteration:
print('over')
- THE END -
最后修改:2023年10月16日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.ink0.cn/index.php/2023/02/19/%e8%bf%ad%e4%bb%a3%e5%99%a8/
共有 0 条评论