python基础学习之生成器与文件系统知识总结


Posted in Python onMay 25, 2021

一、生成器

首先解释迭代器。

能以一种一致的方式对序列进行迭代(比如列表中的对象或文件中的行)是Python的一个重要特点。这是通过一种叫做迭代器协议(iterator protocol,它是一种使对象可迭代的通用方式)的方式实

现的,一个原生的使对象可迭代的方法。

some_dict = {'a': 1, 'b': 2, 'c': 3}  
for key in some_dict:
    print(key)
#输出:
a
c
b

迭代器是一种特殊对象,它可以在诸如for循环之类的上下文中向Python解释器输送对象。大部分能接受列表之类的对象的方法也都可以接受任何可迭代对象。比如min、max、sum等内置方法以及list、tuple等类型构造器。

dict_iterator=iter(some_dict)
print(dict_iterator)
print(list(dict_iterator))
#输出
<dictionary-keyiterator object at 0x7ff0105bea48>
['a', 'c', 'b']

生成器(generator)是构造新的可迭代对象的一种简单方式 。一般的函数执行之后只会返回单个值,而生成器则是以延迟的方式返回一个值序列,即每返回一个值之后暂停,直到下一个值被请求时再继续。要创建一个生成器,只需将函数中的return替换为yeild即可。

def squares(n=10):
    print('Generating squares from 1 to {0}'.format(n ** 2))
    for i in range(1,n+1):
        yield i**2
gen=squares()# 注意: 调用 该生成器时,没有任何代码会被立即执行   ,print操作也并没有被执行!
print(gen)  #<generator object squares at 0x7f3a75af4b40>
 
#  直到你从该生成器中请求元素时,它才会开始执行其代码  
for x  in gen: 
    print(x,)

输出:

<generator object squares at 0x7f3a75af4a00>
Generating squares from 1 to 100
(1,)
(4,)
(9,)
(16,)
(25,)
(36,)
(49,)
(64,)
(81,)
(100,)

另一种更简洁的构造生成器的方法是使用生成器表达式(generator expression)。这是一种类似于列表、字典、集合推导式的生成器。注意 其创建方式为,把列表推导式两端的方括号改成圆括号:

gen=(x**2 for x in range(5))
print(gen)
print(type(gen))
for i in gen:
    print(i)
输出:
<generator object <genexpr> at 0x7ff01066ef00>
<type 'generator'>
0
1
4
9
16
# 和下面的 这个冗长得多的生成器是完全等价的: 
def _make_gen():
    for x  in range(5):
        yield x**2 
 
gen=_make_gen()
for i in gen:
    print(i)

二、文件系统

使用内置的open函数 参数如下表:

python基础学习之生成器与文件系统知识总结

常用的文件方法

python基础学习之生成器与文件系统知识总结

# 用with语句可以容易地清理打开的文件,并在运行基本结束时,自动关闭文件流

with open(path) as f: 
    lines=[x.strip() for x in f]

到此这篇关于python基础学习之生成器与文件系统知识总结的文章就介绍到这了,更多相关python生成器与文件系统内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础教程之序列详解
Aug 29 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
如何用用Python将地址标记在地图上
Feb 07 Python
Python实战之实现简易的学生选课系统
May 25 #Python
python 如何用terminal输入参数
May 25 #Python
python 命令行传参方法总结
May 25 #Python
基于flask实现五子棋小游戏
May 25 #Python
浅谈Python中的函数(def)及参数传递操作
May 25 #Python
Python竟然能剪辑视频
python中的None与NULL用法说明
May 25 #Python
You might like
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
PHP获取文件行数的方法
2015/06/10 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python基础教程之字典操作详解
2014/03/25 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
计算机专业自荐信
2013/10/14 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
优秀护士获奖感言
2014/02/20 职场文书
财务简历的自我评价
2014/03/05 职场文书
销售目标责任书
2014/07/23 职场文书
python基础之模块的导入
2021/10/24 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python