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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
python根据日期返回星期几的方法
Jul 06 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
Python基于分水岭算法解决走迷宫游戏示例
Sep 26 Python
python3.6数独问题的解决
Jan 21 Python
python django model联合主键的例子
Aug 06 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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程序?
2006/12/08 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
科长竞争上岗演讲稿
2014/05/12 职场文书
作风转变年心得体会
2014/10/22 职场文书
大学生学期个人总结
2015/02/12 职场文书
加薪通知
2015/04/25 职场文书