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 相关文章推荐
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python将时分秒转换成秒的实例
Dec 07 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python爬虫实现获取下一页代码
Mar 13 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
python中有函数重载吗
May 28 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 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中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python3中int(整型)的使用教程
2017/03/23 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
什么是规则表达式
2012/05/03 面试题
四年的个人工作自我评价
2013/12/10 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
行政司机岗位职责
2015/04/10 职场文书
消防演习感想
2015/08/10 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Redis读写分离搭建的完整步骤
2021/09/14 Redis
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers