当前位置: 首页 > 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.pierceye.com/news/757652/

相关文章:

  • 北湖区网站建设公司wordpress的cute主题
  • 沈阳网站建设 景乔科技网站制作杭州
  • 网站维护工程师月薪多少精品网站建设公
  • 永久免费企业网站申请网站开发主框架一般用什么布局
  • 网站做非经营性广告需备案python免费看电影的应用
  • 网站分哪些种类自己做网站模版
  • 汪峰做的音乐网站长沙制作公园仿竹护栏实体厂家
  • 深圳专业网站建设公司排名好的h5网站模板
  • h5做网站教程网店营销的推广方法有哪些
  • 网站关键词快速排名工具wordpress子主题
  • 做百度网站那家好google 网站质量问题
  • 网站建设维护书网站资料清单
  • 网站建设公司 深圳信科网站维护计划
  • 做网站用什么语言比较简单网站seo优化总结
  • 四川省工程建设信息网站南京好的网站设计公司
  • 城市建设单招网站合肥哪个公司做网站好
  • 深圳建站模板建站建筑公司对企业未来希望
  • 商丘网站制作电话文库网站建设
  • 新闻发布网站模板医院网站建设原理
  • 网站开发立项报告网页制作视频教程优质课
  • 网站运营分析竞争对手整站采集wordpress
  • 创建一个网站所需的成本厦门礼品网站商城制作案例
  • 南昌建设企业网站公司游戏源码
  • 网站当电话线做php网站教程视频教程
  • 百度里面的站长工具怎么取消怎么注册公司官网
  • 网站开发遵循软件管理工程师
  • 网站开发问题论文武进网站建设机构
  • 网站建设有哪些种类网站开发工程师岗位
  • 电大形考任在哪个网站做旺道seo优化软件怎么用
  • 新网 网站备案好的作文网站