可迭代对象 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的主要内容,如果未能解决你的问题,请参考以下文章

Python教程·迭代可迭代对象迭代器与生成器详解

迭代器与装饰器

大聊Python----迭代器

Python之路-迭代器

迭代器和生成器

5.1.24 Python之列表生成式生成器可迭代对象与迭代器