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去掉字符串中重复字符的方法
Feb 27 Python
Python学习笔记(二)基础语法
Jun 06 Python
如何高效使用Python字典的方法详解
Aug 31 Python
全面分析Python的优点和缺点
Feb 07 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
python模块导入的方法
Oct 24 Python
django中的数据库迁移的实现
Mar 16 Python
python 读取二进制 显示图片案例
Apr 24 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Keras loss函数剖析
Jul 06 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
在html页面中包含共享页面的方法
2008/10/24 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
js数据类型检测总结
2018/08/05 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
python中cPickle用法例子分享
2014/01/03 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
智能电子应届生求职信
2013/11/10 职场文书
欢迎家长标语
2014/10/08 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
教导处教学工作总结
2015/08/12 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书