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中实现结构相似的函数调用方法
Mar 10 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
详解Python import方法引入模块的实例
Aug 02 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
Python pip配置国内源的方法
Feb 14 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
python3读取autocad图形文件.py实例
Jun 05 Python
python3.5的包存放的具体路径
Aug 16 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 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中动态修改ini配置
2014/10/14 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python pytest进阶之conftest.py详解
2019/06/27 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
生日派对邀请函
2014/01/13 职场文书
安全教育演讲稿
2014/05/09 职场文书
承诺书样本
2014/08/30 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
MySQL常见优化方案汇总
2022/01/18 MySQL
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android