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字符串中输入纯粹的{}
Aug 22 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
python实现拼接图片
Mar 23 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
Python更改pip镜像源的方法示例
Dec 01 Python
python中urllib包的网络请求教程
Apr 19 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
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
python快速查找算法应用实例
2014/09/26 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
Python之str操作方法(详解)
2017/06/19 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
学python爬虫能做什么
2020/07/29 Python
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
病媒生物防治方案
2014/05/13 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
单位车辆管理制度
2015/08/05 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL