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实现删除Android工程中的冗余字符串
Jan 19 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
如何基于python实现脚本加密
Dec 28 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
利用python查看数组中的所有元素是否相同
Jan 08 Python
pandas中DataFrame检测重复值的实现
May 26 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python快速排序代码实例
2013/11/21 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
2015年度物业公司工作总结
2015/04/27 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers