当前位置: 首页 > news >正文

男女做特别污污的事情网站软件工程师报名

男女做特别污污的事情网站,软件工程师报名,兰州市科协网站,做网站多大上行速度点击蓝字关注我迭代是Python中常用且非常强大的一个功能#xff0c;它可以用于访问集合、列表、字符串、字典等数据结构的元素。我们经常使用循环和条件语句#xff0c;我们也清楚哪些是可以迭代访问#xff0c;但是具体它们之间有什么有什么异同之处#xff1f;有哪些特点… 点击蓝字关注我迭代是Python中常用且非常强大的一个功能它可以用于访问集合、列表、字符串、字典等数据结构的元素。我们经常使用循环和条件语句我们也清楚哪些是可以迭代访问但是具体它们之间有什么有什么异同之处有哪些特点什么是迭代器、什么是生成器、什么是可迭代对象这些问题对于初学者而言却是很少去细致的研究本文就来详细阐述一下它们之间的关系已经它们的特别之处。—▼—可迭代对象在讲解迭代器和生成器之前先介绍一下可迭代对象。可迭代对象是Python中一个非常庞大的概念它主要包括如下三类迭代器序列字典从上图可以看出不同概念之间的关系迭代器是可迭代对象的一个子集而生成器又是迭代器的一个子集是一种特殊的迭代器。除了迭代器之外Python中还有序列、字典等可迭代对象。现在已经直观的了解了可迭代对象与迭代器、生成器之间的关系那么用Python语言怎么表述它们的区别呢可迭代对象需要实现__iter__方法迭代器不仅要实现__iter__方法还需要实现__next__方法在使用层面可迭代对象可以通过in和not in访问对象中的元素举一个例子X  set([1,2,3,4,5])print(X)print(type(X))print(1 in X)print(2 not in X)for x in X:    print(x)# 输出{1, 2, 3, 4, 5}class setTrueFalse12345前面提到可迭代对象实现了__iter__方法但是它没有实现__next__这也是判定迭代器和其他可迭代对象的关键之处可以看一下通过next访问上述示例中可迭代对象X会报错next(X)# 输出TypeError: set object is not an iterator报的错误是set object is not an iterator它指明了set集合是一个可迭代对象但不是迭代器下面就来介绍一下迭代器。迭代器迭代器是可迭代对象的一个子集它是一个可以记住遍历的位置的对象它与列表、元组、集合、字符串这些可迭代对象的区别就在于next方法的实现其他列表、元组、集合、字符串这些可迭代对象可以很简单的转化成迭代器通过Python内置的iter函数能够轻松把可迭代对象转化为迭代器下面来看一个例子X  [1,2,3,4,5]print(type(X))Y  iter(X)print(type(Y))print(next(Y))print(next(Y))print(next(Y))# 输出class listclass list_iterator123从上述示例中我们可以看出两点通过iter函数把list转化成了迭代器可迭代器能够记住遍历位置能够通过next方法不断从前往后访问除了Python内置的iter之外还可以通过Python内置的工具包itertools创建迭代器其中函数包括countcyclerepeataccumulatechaincompressdropwhileisliceproductpermutationscombinations……itertools中包含很多用于创建迭代器的实用方法如果感兴趣嗯可以访问官方文档进行详细了解。当然也可以自己通过实现__iter__和__next__方法来定义迭代器class Iterator(object):    def __init__(self, array):        self.x  array        self.index  0    def __iter__(self):        return self    def __next__(self):        if self.index             value  self.x[self.index]            self.index  1        else:            raise StopIteration        return valueit  Iterator([1,2,3,4,5])print(type(it))for i in it:    print(i)# 输出class __main__.Iterator12345生成器从文章开头的流程图可以直观的看出生成器是迭代器的子集换句话说生成器一定是迭代器但是迭代器不全是生成器对象。提及生成器就不得不提及一个Python中的关键字yiled在Python中一个函数可以用yiled替代return返回值这样的话这个函数就变成了一个生成器对象举个例子对比一下def generator(array):    for i in array:        return igen  generator([1,2,3,4,5])print(type(gen))# 输出class int这是我们常见的return返回方式这样的话generator函数获取的是一个int型对象下面看一下换成yield关键字def generator(array):    for i in array:        yield(i)gen  generator([1,2,3,4,5])print(type(gen))# 输出class generator这样的话获取的是一个生成器generator除了yield之外在Python3.3之后还加入了yield from获取生成器允许一个生成器将其部分操作委派给另一个生成器使得生成器的用法变得更加简洁yield from后面需要加上可迭代对象这样可以把可迭代对象变成生成器当然这里的可迭代对象不仅包含列表、元组还包含迭代器、生成器。yield from相对于yield的有几个主要优点代码更加简洁可以用于生成器嵌套易于异常处理下面就从简洁代码方面举个例子说明一下def generator(array):    for sub_array in array:        yield from sub_arraygen  generator([(1,2,3), (4,5,6,7)])# 输出1234567当我们需要访问多层/多维可迭代对象时我们就不需要逐层的去用for … in …去访问可以简单的通过yiled from把生成器委派给子生成器除此之外还可以通过生成器表达式的方法得到生成式后面会介绍。print(next(gen))print(next(gen))# 输出12通过上面示例可以看出生成器可以像迭代器那样使用iter和next方法。读到这里可以会有疑惑从这个示例看来生成器和迭代器并没有什么区别啊为什么生成器还可以称得上是Python中的一大亮点首先它对比于迭代器在编码方面更加简洁这是显而易见的其次生成器运行速度更快最后一点也是需要着重说明的一点节省内存。也许在一些理论性实验、学术论文阶段可以不考虑这些工程化的问题但是在公司做项目时内存和资源占用是无法逃避的问题 。如果我们使用其他可迭代对象处理庞大的数据时当创建或者返回值时会申请用于存储整个可迭代对象的内存显然这是非常浪费的因为有的元素当前我们用不到也不会去访问但它却一直占用这内存。这时候就体现了生成器的优点它不是一次性把所有的结果都返回而是当我们每读取一次它会返回一个结果当我们不读取时它就是一个生成器表达式几乎不占用内存。生成器表达式首先来看一个对比示例X  [1, 2, 3, 4, 5]it  [i for i in X]gen  (i for i in X)print(type(X))print(type(it))print(type(gen))# 输出class listclass listclass generator首先说一下it [i for i in X]这种用法叫做列表生成式在很多编程规范中非常推崇的一种替代for循环的方式仔细看一下代码会发现it [i for i in X]与gen (i for i in X)的区别非常小只是一个用了中括号一个用了小括号但是它们的区别缺失非常大的使用中括号的叫做列表生成式获得的返回值是一个列表而使用小括号叫做生成器表达式获得的返回结果是一个生成器这也是前面提到的除了使用yield和yield from两个关键字外还可以使用生成器表达式获得生成器。▲END有趣的灵魂在等你 长按扫码可关注 相关文章【进阶Python】第一讲开篇【进阶Python】第二讲装饰器【进阶Python】第三讲类的特殊方法(上篇)【进阶Python】第四讲类的特殊方法(下篇)文章好看就点这里
http://www.zqtcl.cn/news/757652/

相关文章:

  • 织梦cms 5.6网站地图图标怎么在wordpress
  • instagram wordpress北京seo学校
  • 网站优化的基本思想企业网站建设和运营
  • 网站开发电销常遇到问题怎么建立一个群
  • worldpress 建站少儿编程加盟费一般多少钱
  • 哪个公司做网站建设好九一人才网赣州招聘官网
  • 城阳区规划建设局网站哈尔滨网站建设好
  • 中小型网站建设价位无锡有哪些互联网公司
  • 网站内容收费jquery 网站框架
  • 自己建网站买玩具外贸网站如何做推广
  • 网站 配色表注册公司有什么风险
  • 网站管理员登陆后缀重庆建筑证书查询网站
  • 义乌seoseo建站外贸
  • 只做早餐的网站老网站做seo能不能重新注册
  • 门户网站开发需要多少钱百姓网网站源码
  • 网站设计要学哪些保山网站建设
  • 怎样免费设计网站建设企业网站系统源码
  • 海报设计模板网站找网络公司做网站需要注意
  • 网站开发前端后端书籍wordpress 加文章列表
  • 泰安北京网站建设商业网站的后缀一般为
  • 必须网站的访问量wordpress标题大小
  • qq怎么做放资源的网站英语seo什么意思
  • 学生心理健康网站建设论文php开源内容管理系统
  • 机关网站内容建设雄安专业网站建设
  • 有域名有空间怎么做网站怎么制作网站封面
  • 注册域名哪个网站好信息技术制作网站首页
  • 企业网站app制作价格国外外链平台
  • 泉州市网站设计企业网络有限公司经营范围
  • 电子商务网站创业计划书后台管理系统登录
  • 蚂蚁建站网页传奇游戏单职业