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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python爬虫实现验证码登录代码实例
May 10 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python实现人像动漫化的示例代码
May 17 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
浅析Python 责任链设计模式
Sep 11 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
分享一个python的aes加密代码
Dec 22 Python
python实现自动化群控的步骤
Apr 11 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
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
Python中编写ORM框架的入门指引
2015/04/29 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python中entry用法讲解
2020/12/04 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
自荐信怎么写好
2013/11/11 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
高中生逃课检讨书
2014/10/10 职场文书
医院消毒隔离制度
2015/08/05 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL