python迭代对象_Python迭代对象与迭代器
一.迭代对象
1.概念
迭代对象:可以直接作用于for循环的对象统称为可迭代对象:Iterable。
2.可以直接作用于for循环的数据类型
(1)集合类数据类型,如list, tuple, dict, set, str等
(2)generator,包括生成器和带yield的generator function.
以上这些直接作用于for循环的对象统称为可迭代对象:Iterable.
3.判断一个对象是不是可迭代对象(Iterable)
可以使用isinstance,需要导入模块
from collections import Iterator
from collections import Iterable
(1)判断 str 类型是不是可迭代对象
isinstance('',Iterable)
isinstance('abc',Iterable)
print(isinstance('',Iterable)) # True
print(isinstance('abc',Iterable)) # True
(2)判断 list 类型是不是可迭代对象
isinstance([],Iterable)
isinstance([1,2,3,4],Iterable)
print(isinstance([],Iterable)) # True
print(isinstance([1,2,3,4],Iterable)) # True
(3)判断 元组 类型是不是可迭代对象
isinstance(tuple(),Iterable)
isinstance((1,2,3,4),Iterable)
print(isinstance(tuple(),Iterable))
print(isinstance((1,2,3,4),Iterable))
(4)判断 集合 类型是不是可迭代对象
isinstance(set(),Iterable)
isinstance((1,2,3,4),Iterable)
print(isinstance(set(),Iterable)) # True
print(isinstance((1,2,3,4),Iterable)) # True
(5)判断 字典 类型是不是可迭代对象
isinstance({},Iterable)
isinstance({'name':'wanghua','age':28},Iterable)
print(isinstance({},Iterable)) # True
print(isinstance({'name':'wanghua','age':28},Iterable)) # True
(6)判断 for 循环是不是可迭代对象
isinstance((x for x in range(10)), Iterable)
print(isinstance((x for x in range(10)), Iterator)) # True
二. 迭代器
1.概念
迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
迭代器是在python2.2中被加入的,它为类序列对象提供了一个类序列的接口。有了迭代器可以迭代一个不是序列的对象,因为他表现出了序列的行为。当在python中使用for循环迭代一个对象时,调用者几乎分辨不出他迭代的是一个迭代器对象还是一个序列对象,因为python让他(迭代器)像一个序列那样操作。
2.判断一个对象是否是迭代器(Iterator). 可以使用isinstance,需要导入模块from collections import Iterator
3.判断 for 循环是不是迭代器
isinstance((x for x in range(10)), Iterator)
print(isinstance((x for x in range(10)), Iterator)) # True
成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数:
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
你可能会问,为什么list、dict、str等数据类型不是Iterator?
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的
python迭代对象_Python迭代对象与迭代器相关推荐
- python中字符串转xml对象_Python实现对象转换为xml的方法示例
本文实例讲述了Python实现对象转换为xml的方法.分享给大家供大家参考,具体如下: # -*- coding:UTF-8 -*- ''''' Created on 2010-4-20 @autho ...
- python时间变量_python的对象 变量
对象 所有的数据类型都是对象 字符串 数字:整数.数字 列表.字典 函数.类.模块.方法 print(type(20)) # 查看对象的数据类型 python整型: int 浮点型 :float 精 ...
- python 之属性_Python之对象的属性
# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python之对象的属性 #http://python.jobbole.com/82622/ #对象的属性 ...
- python可变对象与不可变对象_python 可变对象与不可变对象
一.原理 可变对象:list dict set 不可变对象:tuple string int float bool 1. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定 ...
- python中的map对象_python map对象
工作中遇到需要将List对象中的元素(list类型)转化为集合(set)类型,转化完成之后需要需要访问其中的元素. 第一步,使用map方法进行转换 data = [[1, 3, 4], [2, 3, ...
- python 实例化过程_python实例化对象的具体方法
python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号:python中实例化类不需要使用关键字new(也没有这个关键字),类的实例化类似函数调用方式: # c ...
- python入门指南_Python实时对象检测入门指南
python入门指南 多年来,研究人员一直在研究赋予机器以视觉识别和识别物体的能力的可能性. 这个称为计算机视觉或CV的特定领域具有广泛的现代应用程序. 从被自动驾驶汽车用于道路目标检测到复杂的面部和 ...
- python 返回函数对象_Python—函数对象与闭包
一 函数对象 函数对象指的是函数可以被当做"数据"来处理,具体可以分为四个方面的使用. 1.1 函数可以被引用 def index(): print('from index') a ...
- python list存储对象_python List 对象
从源码中可以看到,PyListObject中存储数据用的是PyObject **ob_item, 是当作Vector类似的方法. Items must normally not be NULL,这句是 ...
最新文章
- python学习笔记系列----(五)输入和输出
- cdn贝免费套餐_阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有...
- 分页与无限滚动在评论区的设计差异
- [BZOJ] 1084 [SCOI2005]最大子矩阵
- 自动平衡男女比例的随机分组软件B2G使用教程,献给组织
- python骂人的程序_Python实现敏感词过滤的4种方法
- 演示:Linux工程环境应用实训(防火墙、NAT、静态路由)详细配步骤
- linux shell运行脚本命令行参数,shell脚本命令行参数简介
- 深度学习笔记(1) 深度学习简介
- QtCreator导入yocto sdk记录
- 湖北省小学生计算机大赛,2019年湖北省中小学电脑制作活动机器人竞赛类暨创客竞赛类项目选拔赛圆满落幕...
- 推荐一个清理自己电脑磁盘的磁盘容量图形化软件--WinDirStat
- 理解频域、时域、FFT和加窗 加深对信号的认识
- Navicat Premium连接服务器数据库不成功的原因
- Could not publish server configuration for Tomcat v8.0 Server at localhost.
- Spring报错 Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException
- IT咨询和IT外包有什么区别?
- Java实现输出100-1000的水仙花数
- 模拟滚动条.......
- cython_bbox库就该这么安装