- 什么是迭代器和生成器
可迭代对象 : 可迭代对象并不是指某一个数据类型,而是特指存储了元素的一个容器对象。 这里的容器对象可以具象为:列表、字典、元组、字符串、range都算是一个“容器” 可迭代对象的内部数据“所见即所得”,可迭代的数据是已经看的见的数据了 通俗的说:常规的可迭代对象是一口气给你所有的数据无论你是否需要,他总是要给你他已经拿到的所有 随着迭代对象数据的增加消耗巨大资源 a = [1,2,3,4,5…] 迭代器: 首先迭代器肯定是一个可迭代对象迭代器拥有迭代对象的所有特征迭代器同时拥有 iter() 和 next()方法 迭代器可以记住遍历对象的位置(for的工作核心之一) 迭代器是一个惰性机制,何为惰性。不叫我,我不动,叫我,我才动 通俗的说:迭代器是按需供应的机制,给我1亿个数据你要的时候我给你取 迭代器是一个单向阀门,只能前进不能后退 生成器: 首先生成器肯定是一个迭代器,也是一个可迭代对象,一边迭代一边生成数据 生成器有__iter__() 和 next() 还有一个yield 关键字/命令(类似return) 生成器之所以能生成是因为保存了一套算法/逻辑可以持续生成数据 yield返回一个值,但是不会结束函数,会记住当前值的位置 通俗的讲:生成器是只需要给我规划就好了,我可以啥都不要有规则我可以带你到天涯海角,而且我也是按需供应 生成器的优势在于节省了内存或者说运算资源
|