可迭代对象 Iterable 与 迭代器 Iterator
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可迭代对象 Iterable 与 迭代器 Iterator相关的知识,希望对你有一定的参考价值。
迭代器 Iterator与可迭代对象
1 常见的可迭代对象:
字符串
列表
字典
集合
元组
文件句柄 -->> 迭代器
range() -->> 只是一个可迭代对象
迭代器本身也可迭代
2 判断是否是 可迭代对象 的方法:
1 from collections import Iterable isinstance(‘abcd‘,Iterable)
2 可以判断不同方法的差异 dir() 用set集合 有__iter__() 方法 的数据类型 (即 可迭代协议 ------- 数据类型与python解释器)
可迭代对象 使用__iter__() 方法 ----->>> 转换为 迭代器 iterator
3 判断是否是 迭代器 的方法:
1 from collections import Iterator itor=[1,2,3].__iter__() print(isinstance(itor,Iterator))
2 具有 __next__() 且 __iter__() 方法 迭代器协议
4 迭代器特点
迭代器特点--从头取到尾
某种数据类型 的 迭代器 比 该数据类型 多几个特殊的迭代器使用方法 (且有 该数类型的所有方法 )
‘__setstate__‘, ‘__next__‘, ‘__length_hint__‘ 字典和集合 无序,没有 __setstate__ 方法
li=[1,3,3] itor=[1,2,3].__iter__() print(itor,type(itor)) # <list_iterator object at 0x0000000001E79240> <class ‘list_iterator‘> li_set=set(li) itor_set=set(itor) print(itor_set.issuperset(li_set)) # True print(set(dir(itor))-set(dir(li)) ) # {‘__setstate__‘, ‘__next__‘, ‘__length_hint__‘}
# itor=[1,3,3].__iter__() # print(itor.__next__())
# print(itor.__length_hint__()) # 剩余的元素个数 # itor.__setstate__(2) # 设置从哪里开始 # # print(itor.__next__())
可以用 for 循环 一个 可迭代的对象 , 也可以是一个迭代器
5 迭代器的用途 意义:
迭代器的功能 1 对python的基本数据类型进行统一的遍历 不需要关心每一个值得类型(for 去遍历) 2 可以节省内存---------多次运算
6 迭代器的种类:
本来就是 ----- 文件句柄
可迭代对象 转换 ----- 可迭代对象 使用__iter__() 方法 ----->>> 转换为 迭代器 iterator
7 生成器是自己定义的一个迭代器
以上是关于可迭代对象 Iterable 与 迭代器 Iterator的主要内容,如果未能解决你的问题,请参考以下文章