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的框架下的web app的详细教程
Apr 30 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python实现excel转sqlite的方法
Jul 17 Python
python 文件查找及内容匹配方法
Oct 25 Python
python 多个参数不为空校验方法
Feb 14 Python
Django 大文件下载实现过程解析
Aug 01 Python
python函数修饰符@的使用方法解析
Sep 02 Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 Python
Python configparser模块应用过程解析
Aug 14 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 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
缅甸的咖啡简史
2021/03/04 咖啡文化
php中常用编辑器推荐
2007/01/02 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
jquery实现图片预加载
2015/12/25 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python注释详解
2016/06/01 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Python遍历numpy数组的实例
2018/04/04 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python学生管理系统
2019/01/30 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
django中使用POST方法获取POST数据
2019/08/20 Python
python中的列表和元组区别分析
2020/12/30 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
初中同学聚会邀请函
2014/02/03 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书