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中的多进程与多线程的使用
Apr 07 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
python对离散变量的one-hot编码方法
Jul 11 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Python-opencv 双线性插值实例
Jan 17 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
python如何对链表操作
Oct 10 Python
python 实用工具状态机transitions
Nov 21 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
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python的常见命令注入威胁
2013/02/18 Python
pycharm 使用心得(五)断点调试
2014/06/06 Python
星球大战与Python之间的那些事
2016/01/07 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
社区健康教育实施方案
2014/03/18 职场文书
大学生求职信范文
2014/05/24 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python