码迷,mamicode.com
首页 > 其他好文 > 详细

基础学习之第十三天(迭代器与生成器)

时间:2018-06-19 14:00:36      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:ext   推导   size   直接   发送   __iter__   lis   TE   生成器   

使用函数:
    dir(参数):查看参数的全部信息
  c = str.__iter__():它会返回一个迭代器
  c.__next__():每次打印会只取一个数
  yield:就是把一个函数变成一个生成器,yield是分段执行的

   生成器.send(参数):用来给上一个yield传值的
  生成器.send(参数):可以给上一个yield的位置传递一个值,但是不能给最后一个发送值,而且第一次执行生成器不能使用send(),只能使用__next__()

迭代器与生成器
  一.迭代器
      str.list,tuple,dict,set,一直被称为可迭代对象,为什么呢?因为他们都遵守了可迭代协议,什么是可迭代协议呢?
     如果用dir(变量)函数打印出来的里面含有:__iter__,那么就证明这个数是一个可迭代对象
     __iter__()来获取这个迭代对象,__next__()来打印这个迭代器的每一项内容,如果超出个数了会报错,stopiteration意思就是这个迭代已经完了
二.生成器:
  什么是生成器,生成器的本质就是迭代器

    在python中有三种方法获取生成器

    1.通过生成器函数
    2.通过各种推导式来实现生成器
    3.通过数据转换也可以获取生成器

      第一种:使用yield和return的区别
      区别:1.如果函数中包含了yield,那这个函数就是一个生成器
         2.生成器执行了__next__(),会一直执行到下一个yield
         3.yield的作用与return基本类似但是return是结束,而yield则是只负责返回
         4.return是直接结束

 

基础学习之第十三天(迭代器与生成器)

标签:ext   推导   size   直接   发送   __iter__   lis   TE   生成器   

原文地址:https://www.cnblogs.com/chunqiuyu/p/9197959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!