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在windows命令行下输出彩色文字的方法
Mar 19 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
Python多线程扫描端口代码示例
Feb 09 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python实现使用request模块下载图片demo示例
May 24 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
python中threading开启关闭线程操作
May 02 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
k-means & DBSCAN 总结
Apr 27 Python
Python序列化模块JSON与Pickle
Jun 05 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 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP排序算法类实例
2015/06/17 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
google地图的路线实现代码
2009/08/20 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python编码时应该注意的几个情况
2013/03/04 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python最小二乘法矩阵
2019/01/02 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
jupyter 添加不同内核的操作
2021/02/06 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
四川成都导游欢迎词
2014/01/18 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
公司市场部岗位职责
2015/04/15 职场文书
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
windows server2008 开启端口的实现方法
2022/06/25 Servers