迭代器 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 生成器是自己定义的一个迭代器
时间: 2024-10-06 15:46:08