python 迭代器/生成器

起因

迭代器生成器一直很迷,简单的记录一下区别

迭代器

  • 什么是迭代?
    我理解的迭代,就是使用for循环遍历一个(字符串,列表···)把里面的值一个一个的遍历出来
    这个遍历的过程就可以称之为迭代

  • 什么是迭代器?
    提供迭代方法的容器
    常用迭代器: 序列(列表、元组、字符串)、字典

  • 内置函数

    • iter()
      容器.iter() #返回容器的迭代器
    • next()
      容器.next() #迭代器就会返回下一个值
      error: 迭代器没有值可以返回了,Python会抛出一个StopIteration的异常
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语句返回一个值

posted @ 2020-07-12 15:14  Unixcs  阅读(4)  评论(0编辑  收藏