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 相关文章推荐
Python3处理文件中每个词的方法
May 22 Python
使用Python编写基于DHT协议的BT资源爬虫
Mar 19 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
python如何求解两数的最大公约数
Sep 27 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
Python单元和文档测试实例详解
Apr 11 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
详解python的异常捕获
Mar 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
星际玩家的三大定律
2020/03/04 星际争霸
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
简单的PHP多图上传小程序代码
2011/07/17 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
ExpressJS入门实例
2015/01/14 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Python统计单词出现的次数
2018/04/04 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
培训主管岗位职责
2014/02/01 职场文书
秋游活动策划方案
2014/02/16 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
加薪申请报告范本
2015/05/15 职场文书
花田少年史观后感
2015/06/16 职场文书
远程教育学习心得体会
2016/01/23 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
python标准库ElementTree处理xml
2022/05/20 Python