走入计算机的第二十天(迭代器)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了走入计算机的第二十天(迭代器)相关的知识,希望对你有一定的参考价值。
一 迭代器
迭代的意思:类似于循环每一次重复的过程就被称为迭代的过程,提供迭代方法的容器称为迭代器。
1.迭代器协议是指:迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。
2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法),对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代
3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。
4python为了提供一种不依赖于索引的迭代方式,为一些对象内置__iter__方法,而能执行obj.__iter__这种方法称为可迭代的对象,以obj.__iter__() 这种方法得到的结果就是迭代器,得到的迭代器:既有__iter__这种方法又有__next__的方法。
迭代的概念:重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值
迭代器的优缺点:
优点:
提供统一的且不依赖于索引的迭代方式
惰性计算,节省内存
缺点:
无法获取长度
一次性的,只能往后走,不能往前退
for循环就是触发迭代器的迭代功能,依次循环取出值。
二 生成器
生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器
生成器就是迭代器的一种实现,生成器使得python更为简洁,使python模仿协同程序的概念得以实现。迭代器需要去定义一个类和实现相关的方法。而生成器则只需要在普通函数中加上yield就可以了。
yield的功能:
1.与return类似,都可以返回值,但不一样的地方在于yield返回多次值,而return只能返回一次值
2.为函数封装好了__iter__和__next__方法,把函数的执行结果做成了迭代器
3.遵循迭代器的取值方式obj.__next__(),触发的函数的执行,函数暂停与再继续的状态都是由yield保存的
协同程序,就是可以运行的独立函数调用,保留函数的局部变量等数据,让函数可以暂停或者挂起。并且在需要的时候会从上次执行的后面第一个地方继续执行。
三 。 三元表达式
三元表达式就是可以将一些简单的if判断求值得方法再一次的简介化。会更好更简单的记住那个方法。
三元表达式的公式是:
为真时的结果 if 判定条件 else 为假时的结果结果为错的执行
结果正确的执行
还可以求出函数的大小值如图
四 列表解析
根据已有的条件,将此条件用最简化的格式创建成一个新的你需要的列表形式,就叫做列表解析。
列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。将成立的结果写在左边,不需要不成立的结果。
五 生成器表达式
生成器表达式是在2.4中引入的新内容,它和列表解析的语法很像,但是在大 数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。
列表解析和生成器表达式语法虽然很像,但实质上还是有很大不同的。
生成器表达式是将列表的[]换成(),占的内存很小,可以装上无数个值。其实就是一个迭代器,取值方法和迭代器的方法一样。
以上是关于走入计算机的第二十天(迭代器)的主要内容,如果未能解决你的问题,请参考以下文章