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 time模块用法实例详解
Sep 11 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
一些Python中的二维数组的操作方法
May 02 Python
Python实现文件复制删除
Apr 19 Python
python实现FTP服务器服务的方法
Apr 11 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
python matlibplot绘制3D图形
Jul 02 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
Python字符串格式化f-string多种功能实现
May 07 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
如何利用Python 进行边缘检测
Oct 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
Zerg基本策略
2020/03/14 星际争霸
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
django实现分页的方法
2015/05/26 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python实现简单多线程任务队列
2016/02/27 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
英国健身超市:Fitness Superstore
2019/06/17 全球购物
医院学雷锋活动策划方案
2014/02/15 职场文书
中药学专业求职信
2014/05/31 职场文书
亚运会口号
2014/06/20 职场文书
临床专业自荐信
2014/06/22 职场文书
医院营销工作计划
2015/01/16 职场文书
决心书格式范文
2015/09/23 职场文书