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缩进区别分析
Feb 15 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python正则表达式经典入门教程
May 22 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
Python实现给PDF添加水印的方法
Jan 25 Python
golang中的空接口使用详解
Mar 30 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中fgetcsv()函数用法实例
2014/11/28 PHP
微信支付开发维权通知实例
2016/07/12 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
jquery实现手风琴效果实例代码
2013/11/15 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
python计算auc指标实例
2017/07/13 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Python 日期与时间转换的方法
2020/08/01 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
怎样声明接口
2014/09/19 面试题
中英文求职信范文
2014/01/27 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
新年晚会主持词
2014/03/24 职场文书
工程造价专业求职信
2014/07/17 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
大学生军训感言
2015/08/01 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android