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 装饰器功能以及函数参数使用介绍
Jan 27 Python
使用python调用浏览器并打开一个网址的例子
Jun 05 Python
Web服务器框架 Tornado简介
Jul 16 Python
python 类对象和实例对象动态添加方法(分享)
Dec 31 Python
教你用Python创建微信聊天机器人
Mar 31 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
python与idea的集成的实现
Nov 20 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
一行Python命令实现批量加水印
Apr 07 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP7匿名类用法分析
2016/09/26 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
js 表格隔行颜色
2009/12/02 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
横向对比分析Python解析XML的四种方式
2016/03/30 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Django REST framework视图的用法
2019/01/16 Python
Python3如何判断三角形的类型
2020/04/12 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
亚运会口号
2014/06/20 职场文书
离职信范文
2015/06/23 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Python anaconda安装库命令详解
2021/10/16 Python