Python可迭代对象操作示例


Posted in Python onMay 07, 2019

本文实例讲述了Python可迭代对象。分享给大家供大家参考,具体如下:

1、列表生成式

list = [result for x in range(m, n)]
g1 = (i for i in range(101))
print(type(g1))
print(g1)
print(g1.__next__())

输出:

<class 'generator'>
<generator object <genexpr> at 0x0000024E6AC08F10>
0

g1 = (i for i in range(11))
list1 = [i for i in g1]
print(list1)

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

2、可迭代对象

①.可以直接作用于for循环的对象统称为可迭代对象,我们称之为:Iterator

②.我们可以使用isintance()判断一个对象是否是Iterator对象

③.可以直接作用于for循环的数据类型有以下几种

a.集合数据类型:如list、tuple、dict、set和string
b.生成器(generator):就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。

生成器:

通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,如果我们仅仅需要访问前面几个元素,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。

g1 = (i for i in range(11))
print(g1)
for i in range(11):
  print(next(g1),end='\t')

输出:

<generator object <genexpr> at 0x00000207F5C69678>
0   1   2   3   4   5   6   7   8   9   10 

注意:使用Iterator判断的时候需要导入Iterable的包

from collections import Iterable
print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance("",Iterable))
print(isinstance({},Iterable))
print(isinstance({1,2,3},Iterable))
print({1,2,3})
print(isinstance(1,Iterable))
print(isinstance(1.2,Iterable))
g1 = (i for i in range(101))
print(isinstance(g1,Iterable))

输出:

True
True
True
True
True
{1, 2, 3}
False
False
True

3、迭代器

迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,

直到最后出现StopIteration错误,表示无法返回下一个值

可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)

可以使用isinstance()函数判断一个对象是否是Iterator对象。

注意:可迭代对象不一定是迭代器,但是迭代器一定是迭代对象。

可迭代对象与迭代器的关系:

可迭代对象包含迭代器

from collections import Iterator
print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance("",Iterator))
print(isinstance({},Iterator))
print(isinstance({1,2,3},Iterator))
print({1,2,3})
print(isinstance(1,Iterator))
print(isinstance(1.2,Iterator))
g1 = (i for i in range(101))
print(isinstance(g1,Iterator))

输出:

False
False
False
False
False
{1, 2, 3}
False
False
True

4、 Iterator转换

可以通过Iter()函数将list、tuple、dict、string转换为Iterator对象。

from collections import Iterator
list1 = [i for i in range(11)]
print(isinstance(list1,Iterator))
iter1 = iter(list1)
print(isinstance(iter1,Iterator))
for i in range(11):
  print(next(iter1),end='\t')

输出:

False
True
0   1   2   3   4   5   6   7   8   9   10 

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中正则表达式的用法实例汇总
Aug 18 Python
理解python中生成器用法
Dec 20 Python
python定向爬取淘宝商品价格
Feb 27 Python
python 通过logging写入日志到文件和控制台的实例
Apr 28 Python
Python键盘输入转换为列表的实例
Jun 23 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
python使用threading.Condition交替打印两个字符
May 07 Python
Python中os模块功能与用法详解
Feb 26 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
python实现支付宝转账接口
May 07 #Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
You might like
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
python装饰器初探(推荐)
2016/07/21 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
详解Python 函数参数的拆解
2020/09/02 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
UNIX特点都有哪些
2016/04/05 面试题
信访工作者先进事迹
2014/01/17 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
建筑安全标语
2014/06/07 职场文书
教师职位说明书
2014/07/29 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python