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中使用HTML模版的教程
Apr 29 Python
Python yield 使用浅析
May 28 Python
python实现爬虫下载美女图片
Jul 14 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
一份python入门应该看的学习资料
Apr 11 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
python中的错误如何查看
Jul 08 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 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初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
php浏览历史记录的方法
2015/03/10 PHP
js特殊字符过滤的示例代码
2014/03/05 Javascript
JavaScript中Function详解
2015/02/27 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Python描述器descriptor详解
2015/02/03 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python中的id()函数指的什么
2017/10/17 Python
python书籍信息爬虫实例
2018/03/19 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
python中os包的用法
2020/06/01 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
酒店管理求职信
2014/06/09 职场文书
大学专科自荐信
2014/06/17 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
学风建设主题班会
2015/08/17 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技