python 迭代器/生成器
起因
迭代器生成器一直很迷,简单的记录一下区别
迭代器
-
什么是迭代?
我理解的迭代,就是使用for循环遍历一个(字符串,列表···)把里面的值一个一个的遍历出来
这个遍历的过程就可以称之为迭代 -
什么是迭代器?
提供迭代方法的容器
常用迭代器: 序列(列表、元组、字符串)、字典 -
内置函数
- iter()
容器.iter()
#返回容器的迭代器 - next()
容器.next()
#迭代器就会返回下一个值
error: 迭代器没有值可以返回了,Python会抛出一个StopIteration的异常
- iter()
list1 = [1,2,3,4]
aa = iter(list1) #把生成器赋值给aa
next(aa) # 第一次执行 返回结果 1
next(aa) # 第二次执行 返回结果 2
next(aa) # 第三次执行 返回结果 3
next(aa) # 第四次执行 返回结果 4
next(aa) # 第五次执行 返回报错 StopIteration
生成器
什么是生成器?
在 Python 中,这种一边循环一边计算的机制,称为生成器:generator。
生成器的好处是延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用。
为什么需要生成器?
因为当列表过大(有几百万个以上的元素) 会非常占用内存,所以这时候就生成器应运而生。
作用:生成器的列表元素可以按照某种算法推算出来,可以在循环的过程中不断推算出后续的元素
生成器的两种表达方式
-
生成器表达式
-
生成器函数
生成器使用yield语句返回一个值,
而常规函数使用return语句返回一个值