其他内置类型迭代器

除了文件以及列表这样的实际的序列外,其他类型也有适合的迭代器。

遍历字典的经典方法是明确的获取其键的列表。

在最近的python版本中,字典有一个迭代器,在迭代环境中,会自动一次返回一个键

列表解析:

L = [1,2,3,4,5]

L = [i + 10 for i in L]

也可以用for循环去处理:例如

Z = []

for i in range(5)

  z.append(i)

实际上,这和列表解析所做的事情是相同的。然而,列表解析编写起来更精简,比手动的for循环语句运行快1倍(大约),因为它们的迭代在解释器内部是用c语言的速度执行,试用于较大的数据集合,个人认为尽量使用列表解析。

在文件上使用列表解析

换行符很讨厌,还有就是一些双倍的空白等等。

所以我们可以考虑使用列表解析。例如:假设变量lines像前面交互模式中的一样,如下的代码通过对列表中的每一行运行字符串rstrip方法,来移除右端的空白(line[:-1]分片也有效,但是,当我们能够确保所有的行都是正确的是后,它才有效。)

当然了,列表解析这种方法也可以用在文件上,比如说打开一个文件,正常的情况下,他会出现一些换行符,用上述放发可以解决这个问题

扩展的列表解析语法

作为一个特别有用的扩展,表达式中镶嵌的for循环可以有一个相关的if子句,来过滤那些测试不为真的结果。

例如:假设我们想要重复前面小节的文件扫描示例,我们需要收集以字母s开头的那些行。向表达式中添加一条if过滤子句来实现。

可以看到将1.txt中的文件以s开头的文件过滤出来了。

我们也可以用for循环的方式,但是运行结果就慢了很多。例如:

今天写到这里,哥们来了,去接他。

python迭代器生成器(二)的更多相关文章

  1. Python迭代器生成器与生成式

    Python迭代器生成器与生成式 什么是迭代 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭 ...

  2. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  3. python 迭代器 生成器

    迭代器 生成器 一 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前 ...

  4. Python 迭代器&生成器

    1.内置参数     Built-in Functions     abs() dict() help() min() setattr() all() dir() hex() next() slice ...

  5. python迭代器,生成器,推导式

    可迭代对象 字面意思分析:可以重复的迭代的实实在在的东西. list,dict(keys(),values(),items()),tuple,str,set,range, 文件句柄(待定) 专业角度: ...

  6. Python迭代器生成器,私有变量及列表字典集合推导式(二)

    1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getatt ...

  7. 4.python迭代器生成器装饰器

    容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中 ...

  8. Python(迭代器 生成器 装饰器 递归 斐波那契数列)

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  9. python迭代器生成器

    1.生成器和迭代器.含有yield的特殊函数为生成器.可以被for循环的称之为可以迭代的.而可以通过_next()_调用,并且可以不断返回值的称之为迭代器 2.yield简单的生成器 #迭代器简单的使 ...

随机推荐

  1. [原创]Nexus5 内核编译烧录过程记录

    参考Android系统源代码情况分析第二章进行实践,为了提高效率,也为了增加实践机会,使用Nexus5进行内核编译.需要说明的是,Android源代码工程默认是不包含它所使用的Linux内核源码,如果 ...

  2. Linux下Samba服务器的安装和配置

    第一步:sudo apt-get install samba smbclient 安装samba服务器. 第二步:打开/etc/samba/smb.conf文件,在末尾添加下面的字段: [用户名] c ...

  3. 磁盘分区-gdisk用法

    gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-modemenu ...

  4. Django初探——工程创建以及models数据库相关配置

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  5. 解决相关css基础问题

    //html代码 <div class="operateWays"> <label> <input type="radio" na ...

  6. 入职这一段时间的总结,Don't Repeat Yourself.

    1.第一次接触到大型软件系统的开发,现在我们使用的是 python + flask +vue.js ,数据库:postgresql 2. 不要在自己不懂的情况下复制代码,每次分析一段代码的时候,就跟以 ...

  7. nodeJS之fs文件系统

    前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所 ...

  8. Bottle源码阅读笔记(一):WSGI

    前言 Bottle是一个Python Web框架.整个框架只有一个文件,不到4k行的代码,没有Python标准库以外的依赖,却包含了路由.模板和插件等Web框架常用功能.通过阅读Bottle源码来了解 ...

  9. 在Intellij Idea中使用JSTL标签库

    习惯了eclipse和myeclipse开发的我们总是依赖于系统的插件,而当我想当然的以为IntelliJ IDEA 的jstl 的使用应该和myeclispe一样,当时使用起来却到处碰壁,完全找不到 ...

  10. vue-cli webpack在node环境下安装使用

    第一步,需要下载并安装node.js以及他的npm组件: 第二步,用node -v;npm -v来测试node.js以及npm是否安装成功(建议用GIT命令行工具,因为GIT是linux系统),如果显 ...