迭代器生成器

一、迭代器、生成器

迭代器

  • 迭代器:一个可迭代对象,不放回
  1. 迭代器定义
    1. 是一个容器型数据,支持遍历和转列表
    2. 一种特殊专门为了遍历而建立的数据类型
  2. 迭代器特性:
    1. 打印一个迭代器,看不到元素(print)
    2. 迭代器无法获取元素个数(len)
    3. 如果想要使用迭代中的元素,必须将元素从迭代器中取出(遍历)
    4. 而且在取的时候,只能自上而下取数,且取一个少一个,取出来的数据无法再放回(无放回)
  3. 迭代器的功能:利用其不放回的特性,进行实际生活中的应用
  4. 迭代器操作
    1. 创建迭代器:
      1. 用iter()直接转
      2. 创立生成器
    2. 迭代器的查:
      1. 获取单个元素(获取最上层元素):next(迭代器)

        • li = ‘abc’
        • print(next(li)) -> ‘a’
        • print(next(li)) -> ‘b’
      2. 遍历:for循环

      3. 转化成列表:list(),用完list构造器后,原迭代器也会被取完

生成器

生成器:一个生成指定个数,指定数值的算法,yield

  1. 生成器定义:
    • 是容器型数据类型,不是存储数据,而是储存能够自动生成数据的算法,来节省空间。
    • 特性和取数操作和迭代器一样,只有底层的数据储存原理不一样和创建方法不一样
  2. 生成器特性:
    1. 打印无法看到元素(print)
    2. 无法看到元素的个数(len)
    3. 用的时候要使用生成器的数据,遍历(for)
    4. 取一个少一个(无放回)
  3. 生成器的功能:1.节省内存。2.利用yield特性,进行处理
  4. 迭代器操作:
    1. 创建生成器:不是数据本身,而是创建产生数据的算法(自定义函数)
      • 函数中加入yield的特殊性:
        1. 单行写入yield就行,只要有yield就会变成生成器
        2. 此时调用函数,不会返回return值,会返回一个生成器对象
      • 写法:
        1. 数据个数:生成器创建数据的个数和数据的值,由执行函数体时,遇到几次yield,就会生成多少个数据
        2. 数据的值:yield后面的值是什么,元素的值就是什么。相当于return
      • 常见用法:
        • def func(subject):
        • for i in range(1,100):
        •      yield f'{subject}{x:0>3}'
          
        • gen = func(‘Python’)
        • for i in gen:
        • print(i)
          
        • 输出值是:’python001‘到’python099‘
    2. 生成器的查:和迭代器一样
  5. 生成器产生数据的原理
  • yield:只有在遍历时会执行函数;会分隔函数;且标记,下次从上次的位置开始运行
    1. 调用函数,进行传参的时候,不执行函数体。
    2. 只有当在获取该生成器对象中元素的时候,才会调用函数体。
    3. 每次执行函数体:从开始执行到一个yield停下,将yield后面的数据作为获取到的元素。
    4. 下次执行:接着上次的地方接着执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值