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之模块的加载
Oct 24 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
Python类的继承用法示例
Jan 31 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
Python学习笔记之While循环用法分析
Aug 14 Python
Python底层封装实现方法详解
Jan 22 Python
python logging.info在终端没输出的解决
May 12 Python
python实现腾讯滑块验证码识别
Apr 27 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
php中curl使用指南
2015/02/05 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
对于Python中线程问题的简单讲解
2015/04/03 Python
python实现图像识别功能
2018/01/29 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
pycharm修改file type方式
2019/11/19 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
给客户的道歉信
2014/01/13 职场文书
情侣吵架检讨书
2014/02/05 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
大学军训感言300字
2014/03/09 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
入股协议书范本
2014/11/01 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
党支部季度考核意见
2015/06/02 职场文书
如何写好开幕词?
2019/06/24 职场文书
浅谈Python协程asyncio
2021/06/20 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js