走入计算机的第二十天(迭代器)

一 迭代器

迭代的意思:类似于循环每一次重复的过程就被称为迭代的过程,提供迭代方法的容器称为迭代器。

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中引入的新内容,它和列表解析的语法很像,但是在大 数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。

列表解析和生成器表达式语法虽然很像,但实质上还是有很大不同的。

生成器表达式是将列表的[]换成(),占的内存很小,可以装上无数个值。其实就是一个迭代器,取值方法和迭代器的方法一样。
时间: 2024-11-13 16:20:34

走入计算机的第二十天(迭代器)的相关文章

走入计算机的第四十天(数据库1)

一  什么是数据库 数据库故名思意就是存放数据的地方,是指长期存储在计算机内有组织可以共享的数据的集合. 数据库的数据按照一定的数学模型组织,描述和储存的,具有较小的冗余性和较高的可扩展性,并共享 二 数据库管理系统软件 数据库管理系统(Database Management System)是操纵和管理数据库的大型软件,用于建立,使用和维护数据库,简称DBMS. 它对数据库进行统一的管理和控制,以确保数据库的安全性和完整性.用户通过DBMS访问数据库中的数据,数据库中的管理员也是通过DBMS进行

走入计算机的第三十三天(异常处理和scoket编程)

一 异常处理 1 异常和错误,而错误分成了两种 一是语法错误,这种错误过不了解释器的检测,必须要在执行前改正 二是逻辑错误,在执行的时候检测出了错误. 2 什么是异常:异常就是程序在运行是产生的错误信息. 3 异常的种类 python3中不同的异常分为不同的类型,用不同的类型去标识.不同的类型对象错误都有相对应的标识语法. AssertionErr: 断言语句失败:关键字后边的条件为假的时候,程序将 停止并抛出AssertionError异常,语句一般是在测试程序的时候用于在代码中置入的检查点.

走入计算机的第十天(linux基础的结尾)

一  nfs服务器 1  NFS的介绍:是Network File System的简写,是网络文件系统.用于分散式文件系统的协定,由sun公司开发的,在1984年向外公布的. 2  NFS的功能:是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. 3  NFS的基本原则:是"容许不同的客户端及服务端通过一组RPC分享相同的文件系统",它是独立于操作系统,容许不同硬件及操作系

走入计算机的 第十七天(python的字符编码和函数)

一  字符编码的只是储配 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数据丢失 因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到了硬盘上. 在这一点上,我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已. 2. python解释器执行py文件的原理 ,例如python test.py 第一阶段:python解释器启动,此

走入计算机的第二十六天(内置模块4)

一 补充正则表达式的其他一些使用方法 1.贪婪模式:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配 1 #贪娈匹配 2 # ret=re.findall("abc+","abccccccccccccccgds") 3 # print(ret) 4 5 # ret=re.findall("abc{1,}","abccccccccccccccgds") 6 # print(ret) 2非贪婪匹配:在满足匹配时,匹配尽

走入计算机的第四十天(python中sockserver模块)

一.Python中的sockserver模块 1.该模块与sock模块不同之处是该模块自动帮我们分装好了一些功能,让我们在编程的时候直接调用这些功能就可以了,节省了编程步骤. 2.如图所示 注释:上图为服务端设置 该模块的操作方法比较死板,我们只要会熟悉的使用他就可以了.

走入计算机的第三十九天(python终结篇之IO模型)

一.IO模型 1.IO模型分类 1.阻塞IO--------blocking IO 2.非阻塞IO------nonblocking IO 3. 多路复用IO------- multiplexing 4.信号驱动IO-------signal driven IO (工作中不会使用到,只是作为了解) 5.异步IO------- asynchronous IO 2.通常情况下IO默认操作分为两个阶段(默认都是阻塞IO) 1.准备等待数据阶段,相当于请求操作系统是否有数据发送过来(调用IO操作). 2

走入计算机的第二十八天(面向对象的程序设计)

一  什么是面向对象的程序设计及为什么要有它 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是

走入计算机的第三十八天(python的进程和协成))

一.进程 1.multiprocessing模块实现多进程并发. 1.1multiprocessing包是Python中的多进程管理包,与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程 该进程可以运行在Python程序内部编写的函数,属于父进程和子进程的关系.该Process对象与Thread对象的用法相同,也有start(), run(), join()的方法. 1.2Process类的简绍 构造方法: Process([gro