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中文乱码的解决方法
Nov 04 Python
python解析模块(ConfigParser)使用方法
Dec 10 Python
python实现斐波那契递归函数的方法
Sep 08 Python
Python类属性的延迟计算
Oct 22 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python对输出的奇数偶数排序实例代码
Dec 04 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
hadoop中一些常用的命令介绍
2013/06/19 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
offsetParent 算法分析
2010/04/05 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
Vue2几种常见开局方式详解
2017/09/09 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
python使用xslt提取网页数据的方法
2018/02/23 Python
Python常用的json标准库
2019/02/19 Python
pandas分区间,算频率的实例
2019/07/04 Python
django用户登录验证的完整示例代码
2019/07/21 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
python打印异常信息的两种实现方式
2019/12/24 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
人事文员岗位职责
2015/02/04 职场文书