承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展

本章重点内容

1、迭代

  1)什么是迭代?都有哪些分类

  2)常规的使用方法

  3)多遍迭代器VS单遍迭代器

2、列表推导

  1)列表推导的常规格式

  2)列表推导的相关扩展语法

接下来是针对重点内容的详细说明和代码示例

1、迭代

1)迭代:书中并没有介绍或者说明,什么叫迭代,但是我认为有必要说明一下,迭代就是:重复反馈过程的活动,每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,其中的关键是”对过程的重复“,和本章内容结合起来理解,就是可以序列遍历,或者能一次产生一个结果

2)迭代相关的概念

可迭代对象:根据本书的定义,就是可以支持iter调用的对象

迭代器:支持next调用的对象,有些时候,可迭代对象与迭代器是相同的

迭代协议:计算机中的协议,可以看成是一个处理事件的接口,也就是可以处理迭代的接口

2)常规的使用方法,针对上面的文字说明可能比较拗口不容易理解,说实话,我也是看很多遍才了解一些的,还谈不上完全理解,可以通过下面的代码示例,来进一步理解

列表本身不是迭代器,所以需要用iter转换成可迭代的,

迭代器的特点就是,每次返回一个结果,直到最后没有可返回的数据,会触发异常【StopIteration】

很多时候,这样的迭代器和for循环有很多功能相似的地方,针对以上迭代的示例,可以通过for循环来一次实现,如下

其实for循环的底层运算逻辑就是通过迭代器进行的,两者在语法表现上不相同,其实结合while循环,使用迭代器,也可以实现上面for循环的效果,示例如下:

可以利用迭代器中最后会触发异常来通过try语句捕捉,进行判断处理

除了上面说的列表可以转换成迭代对象使用外,其他如文件、字典类型,都可以,以字典为例,具体代码如下:其中红色标注出来的,是为了说明本身不是可迭代对象,需要通过iter转换

3)多遍迭代器VS单遍迭代器

13章有讲解编写循环的技巧,其中有讲到range、map、zip等,这些内置函数也是可以迭代的,但是迭代的方式有所不同

其中range是支持多遍迭代,但是map和zip等只支持单遍迭代,这样说可能比较抽象,通过代码示例理解可能更直观一些,如下

以上,是Range函数示例,I1的第一次迭代后,重新创建I2,I2就是从开始迭代,所以通过多次创建,实现多次迭代

而map和zip是不一样的,只能迭代一次,不论是创建几个对象,具体代码示例如下:以zip为例

通过以上代码,可以知道:Zip产生的对象,本身有迭代器,因为它支持next函数,不用iter转换,通过iter转换成I1、I2、I3后,调用next函数会发现,结果都是依次进行的,不会是从头开始,所以到最后的I3直接触发异常,结束迭代,也就是说只有一次迭代

2、列表推导

1)列表推导的常规格式,通过代码会更好理解:

列表推导是创建列表的一种方式,常规格式有两个部分组成,可以通过for来划分,for之前是一部分,是操作的方式,for的后面是第二部分,是说明被操作的数据从哪获得

以上的方式,也可以通过一个for循环来实现,具体代码如下:

两者一对比你就会发现,同样的功能实现,列表推导会更精简一些,同时也是运算速度相对快一些的,

2)列表推导的相关扩展语法

上面是列表推导的基本用法,可以在基本用法的基础上,通过if和for,进行更多的扩展

通过if增加筛选,具体代码示例如下:

通过for增加嵌套循环,具体代码示例如下:

以上就是本章主要要讲解的内容,其中有些比较抽象的我就跳过来,后续的相关章节中会有更深入的说明,我认为一些内容现在还不用那么快讲解,因为有些我也不太清楚,需要进一步往后学习,才能更深入的理解

《Python学习手册 第五版》 每章时间规划及完成进度:

2019.11.25-2019.12.01 第01章,已完成:《Python学习手册 第五版》 -第1章 问答环节

2019.12.02-2019.12.08 第02章,已完成:《Python学习手册 第五版》 -第2章 Python如何运行程序

2019.12.09-2019.12.15 第03章,已完成:《Python学习手册 第五版》 -第3章 你应如何运行Python程序

2019.12.16-2019.12.22 第04章,已完成:《Python学习手册 第五版》 -第4章 介绍Python对象类型

2019.12.23-2019.12.29 第05章,已完成:《Python学习手册 第五版》 -第5章 数值类型

2019.12.30-2020.01.05 第06章,已完成:《Python学习手册 第五版》 -第6章 动态类型

2020.01.06-2020.01.12 第07章,已完成:《Python学习手册 第五版》 -第7章 字符串基础

2020.01.12-2020.01.19 第08章,已完成:《Python学习手册 第五版》 -第8章 列表与字典

2020.01.20-2020.01.26 第09章,已完成:《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型

2020.01.27-2020.02.02 第10章,已完成:《Python学习手册 第五版》 -第10章 Python语句简介

2020.02.03-2020.02.09 第11章,已完成:《Python学习手册 第五版》 -第11章 赋值、表达式和打印

2020.02.10-2020.02.16 第12章,已完成:《Python学习手册 第五版》 -第12章 if测试和语法规则

2020.02.17-2020.02.23 第13章,已完成:《Python学习手册 第五版》 -第13章 while循环和for循环

2020.02.24-2020.03.01 第14章,已完成:

以下链接,可以供你了解这个学习笔记的所有章节最新进度

自学笔记系列:《Python学习手册 第五版》 -写在开始之前

《Python学习手册 第五版》 -第14章 迭代和推导的更多相关文章

  1. 《Python学习手册 第五版》 -第13章 while循环和for循环

    上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...

  2. 《Python学习手册 第五版》 -第12章 if测试和语法规则

    本章节的内容,主要讲解if语句,if语句是三大复合语句之一(其他两个是while和for),能处理编程中大多数逻辑运算 本章的重点内容如下: 1.if语句的基本形式(多路分支) 2.布尔表达式 3.i ...

  3. 《Python学习手册 第五版》 -第11章 赋值、表达式和打印

    上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...

  4. 《Python学习手册 第五版》 -第10章 Python语句简介

    前面在开始讲解数据类型的时候,有说过Python的知识结构,在此重温一下 Python知识结构: 程序由模块组成 模块包含语句 语句包含表达式 表达式创建并处理对象 关于知识结构,前面已经说过我自己的 ...

  5. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  6. 《Python学习手册 第五版》 -第18章 参数

    在函数的定义和调用中,参数是使用最多喝最频繁的,本章内容就是围绕函数的参数进行讲解 本章重点内容如下: 1.参数的传递 1)不可变得参数传递 2)可变得参数传递 2.参数的匹配模式 1)位置次序:从左 ...

  7. 《Python学习手册 第五版》 -第15章 文档

    本章主要介绍Python中的文档,会通过多种方式来说明,如果查看Python自带文档和其他参考的资料 本章重点内容 1.#注释:源文件文档 2.dir函数:以列表显示对象中可用的属性 3.文档字符串 ...

  8. 《Python学习手册 第五版》 -第16章 函数基础

    前面的章节讲解的是一些基础数据类型.基本语句使用和一些文档查看的内容,这些都是一些基础,其实还谈不上入门,只有了解了函数,才算入门 函数是编程里面使用最多的也是最基本的程序结构, 本章重点内容 1.函 ...

  9. 《Python学习手册 第五版》 -第17章 作用域

    上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...

随机推荐

  1. k8s Pipline CI/CD

    一.Pipeline介绍 pipeline是一套jenkins官方提供的插件,它可以用来在jenkins中实现和集成连续交付 用户可以利用Pipeline的许多功能: 代码:pipeline在代码中实 ...

  2. Vue简介与基础

    一.什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于 ...

  3. Django使用 djcelery时报ImportError: No module named south.db错误

    这时候可能是安装的Django-celery.celery的版本过低引起的,可以到pycharm查看推荐的版本,把版本更换到的推荐的版本就解决了

  4. 06_TypeScript泛型

    1.泛型的定义 泛型就是解决 类,接口 方法的复用性,以及对不特定数据的支持(类型校验). 2.泛型函数 //T 表示泛型,具体什么类型是调用这个方法的时候决定的, //T可以用其他大写字母表示,传入 ...

  5. 使用Visual Studio Comunity 2019开发Unity C#脚本没有自动补全的解决方法

    最近开始试着玩Unity3D,要为场景中的物体编辑脚本.Unity3D推荐的脚本语言是C#,在Unity打开C#就会使用Visual Studio来进行编辑. 启动Visual Studio之后注意到 ...

  6. 「Flink」Flink 1.9 WebUI运行作业界面分析

    运行作业界面 在以下界面中,可以查看到作业的名称.作业的启动时间.作业总计运行时长.作业一共有多少个任务.当前正在运行多少个任务.以及作业的当前状态. 这里的程序:一共有17个任务,当前正在运行的是1 ...

  7. Python模块之Requests

    目录 Requests 模块 常规的get请求 基于ajax的get请求 常规的post请求 基于ajax的post请求 综合项目实战 requests模块高级 requests代理 验证码处理 Re ...

  8. python——异常(1),捕获特定异常

    """1.捕获指定异常,异常类型有多种2.若尝试执行的代码异常类型与捕获的异常类型不同则报错3.try下方一般只放一行代码,若有多行可能异常代码,则捕获一个异常类型后函数 ...

  9. 深入浅出 .NET C# 反射技术

    反射这个词听起来就很牛逼是吧? 嗯的确,反射是比较高级的特性,只有语言基础很扎实的Dev们才应该使用它. 搞点反射,可以提高程序的灵活性.可扩展性.耦合度. 反射这东西,是为了动态地运行时加载,相比于 ...

  10. java 企业 网站源码 模版 屏幕自适应 有前后台 springmvc SSM 生成静态化

    前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问 ...