python函数之可迭代对象、迭代器的判断
怎么判断一个对象是可迭代对象还是迭代器
例子
from collections import Iterable, Iterator
lst = ['Today is Wednesday', 'Tomorrow is Thursday', 'The day after tomorrow is Friday']
it = lst.__iter__()
方案一
使用dir()函数查看对象的属性列表,如果只有
__iter__()
函数则是可迭代的,如果__iter__()
和__next__()
函数都有则是迭代器。
一个数据类型中包含了__iter__函数表示这个数据是可迭代的
dir(数据): 返回这个数据可以执行的所有操作
判断迭代器和可迭代对象的方案(野路子)
__iter__ 可迭代的
__iter__ __next__ 迭代器
print(dir(lst))
print(dir(it))
[__add__
, __class__
, __contains__
, __delattr__
, __delitem__
, __dir__
, __doc__
, __eq__
, __format__
,
__ge__
, __getattribute__
, __getitem__
, __gt__
, __hash__
, __iadd__
, __imul__
, __init__
,
__init_subclass__
, __ iter __ , __le__
, __len__
, __lt__
, __mul__
, __ne__
, __new__
, __reduce__
,
__reduce_ex__
, __repr__
, __reversed__
, __rmul__
, __setattr__
, __setitem__
, __sizeof__
, __str__
,
__subclasshook__
, append
, clear
, copy
, count
, extend
, index
, insert
, pop
, remove
, reverse
,
sort
]
[__class__
, __delattr__
, __dir__
, __doc__
, __eq__
, __format__
, __ge__
, __getattribute__
, __gt__
,
__hash__
, __init__
, __init_subclass__
, __ iter __ , __le__
, __length_hint__
, __lt__
, __ne__
, __new__
,
__ next __ , __reduce__
, __reduce_ex__
, __repr__
, __setattr__
, __setstate__
, __sizeof__
, __str__
,
__subclasshook__
]
方案二
使用isinstance() 函数来判断一个对象是否是一个已知的类型
判断迭代器和可迭代对象的方案(官方)
from collections import Iterable, Iterator
isinstance(对象, Iterable) 是否是可迭代的
isinstance(对象, Iterator) 是否是迭代器
print(isinstance(lst, Iterable)) #
print(isinstance(it, Iterator)) #
True
True
python函数之可迭代对象、迭代器的判断的更多相关文章
- 11.Python初窥门径(函数名,可迭代对象,迭代器)
Python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return ...
- Python中的可迭代对象/迭代器/For循环工作机制/生成器
本文分成6个部分: 1.iterable iterator区别 2.iterable的工作机制 3.iterator的工作机制 4.for循环的工作机制 5.generator的原理 6.总结 1.i ...
- python当中的 可迭代对象 迭代器
学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样 ...
- 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】
Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...
- python编程系列---可迭代对象,迭代器和生成器详解
一.三者在代码上的特征 1.有__iter__方法的对象就是可迭代类(对象) 2.有__iter__方法,__next()方法的对象就是迭代器3.生成器 == 函数+yield 生成器属于迭代器, 迭 ...
- 可迭代对象&迭代器&生成器
在python中,可迭代对象&迭代器&生成器的关系如下图: 即:生成器是一种特殊的迭代器,迭代器是一种特殊的可迭代对象. 可迭代对象 如上图,这里x是一个列表(可迭代对象),其实正如第 ...
- Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器
Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: 1. 可以在局部作用域声明一 ...
- python 迭代器(一):迭代器基础(一) 语言内部使用 iter(...) 内置函数处理可迭代对象的方式
简介 在 Python 中,所有集合都可以迭代.在 Python 语言内部,迭代器用于支持: 1.for 循环2.构建和扩展集合类型3.逐行遍历文本文件4.列表推导.字典推导和集合推导5.元组拆包6. ...
- Python:容器、迭代对象、迭代器、生成器及yield关键字
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list, ...
随机推荐
- C入门注意事项
C语言入门应该注意什么 进入IT行业,很多人一开始接触的都是C语言,C语言可以说是一门基础课程了,只要有了C语言的基础,那么以后不管是学什么语言都会比较容易上手.同时在学习其它语言时也可以 ...
- 记一次msyql导入导致的问题
公司有个项目要导入150M大小的sql文件,但是导入时报错,去网上找答案,很多人说是因为保留字什么什么的,所以就按照sql文件里面的mysql版本又去下载了一份mysql5.6安装好,但是登陆不了,又 ...
- Linux集群架构(二)
Linux集群架构(二) 目录 八.LVS DR模式搭建 九.keepalived + LVS 十.扩展 八.LVS DR模式搭建 1.实验环境: 四台机器: client: 10.0.1.50 Di ...
- 常用的数组函数-S
header('content-type:text/html;charset=utf-8'); //声明一个数组 $arr=['one'=>'aaa','two'=>'bbb','thre ...
- 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...
- springboot整合ueditor 前后端分离
1.下载ueditor,百度搜索ueditor,下载 前端用的是Jsp版,导入文件如下 由于要修改部分源码,所以后端用的源码版,导入文件如下 2.配置路径,用来找到json文件 配置前端ueditor ...
- 计算1~100之间,能被3整除但是不能被7整除的数的和(C语言)
#include<stdio.h> int main(agrc *agrv) { int n,i; int sum=0; scanf("%d",&n); for ...
- winform devexpress 用法汇总
废话不多说先上图 1.封装分页控件 qrcodeOnPage1.SearchData(gridControl2, IDataPage, sWhere, "", "tb_o ...
- MHA(上)
一.mysql-mha环境准备 1.准备工作 1.1 实验环境: 1.2 软件包 用到的所有包 链接:https://pan.baidu.com/s/19tiKXNEW4C6oWi9OFmcDYA 提 ...
- 从零开始写自己的PHP框架系列教程(二)[App.php]
从这一个文件开始以后加载的均以类加载,请注意命名空间和所在文件的路径 APP.php的这个类所在路径:根目录\framework\App.php 直接上代码 namespace framework; ...