迭代器和生成器
一迭代器
生活中的案例:想象你在餐厅吃自助餐。你的盘子就像是数据集合,里面有各种食物(数据)。迭代器 就像是你的叉子或筷子,你用它来一口一口吃(处理数据),直到盘子里的食物吃完。你不需要一次把 所有食物都放进嘴里,而是逐个吃掉它们。同样,迭代器允许你一次处理一个数据项,直到所有数据都 被处理完。
在爬虫中: 网络爬虫经常需要处理大量的数据。如果将所有数据一次性加载,会造成内存的浪费 因为 有些数据我们不需要全部加载出来,所以说我们可以用迭代器 将需要的一个一个加载
a = ['面包', '牛奶', '水果']
# 通过iter函数来获取列表a的迭代器对象
item = iter(a)
# 使用next函数获取迭代器的下一个元素
next(item)
二、什么是生成器?了解 爬虫时候
生成器是一个特殊的函数,你返回一个序列的值,但不是一次性返回所有值,而是一次返回一个,调用 函数会保存当前状态
# 这是一个生成器函数
def a():
yield 10 # yield 会让当前函数变成生成器 返回内容 并 保存状态
print('我有事去了')
yield 20
print('我又做别的处理去了')
yield 30
# 创建一个生成器对象
item = a()
# 使用next函数获取生成器的下一个元素
print(next(item) # 输出 10
print(next(item)) # 输出 20
print(next(item)) # 输出 30
# 再次尝试调用 next(item) 会抛出 StopIteration 异常,因为没有更多的元素
在爬虫中的应用:在爬取内容的时候 比如说 我爬到第10条 我需要做个处理,当我们处理完 再来爬 依然是从第10条开 始,并且能够节省内存和资源的损耗。 保存当前的状态。