可迭代对象 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 生成器是自己定义的一个迭代器

 



 
时间: 2024-10-06 15:46:08

可迭代对象 Iterable 与 迭代器 Iterator的相关文章

Python 迭代对象、迭代器、生成器详解

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,本文将一一为大家进行介绍,希望对大家学习python有所帮助. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in ,  not in 关键字判断元素是否包含在容器

完全理解Python迭代对象、迭代器、生成器

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据

[转载]完全理解Python迭代对象、迭代器、生成器

译文地址:liuzhijun 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素

Python迭代对象、迭代器、生成器

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据

完全理解 Python 迭代对象、迭代器、生成器

2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 原文出处: liuzhijun 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网友指正. 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式

生成器generator和迭代器Iterator

一.列表生成式       在学习生成器迭代器之前先了解一下什么是列表生成式,列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式.什么意思?举个例子,如果想生成列表[0,1,2,3,4,5]可以使用list(range(6)),但是如果想要生成[,,,,,]即[0,1,4,9,16,25]怎么做? #方法一:循环>>> L = []>>> for x in range(6):... L.append(x**2)...>>> L[

python学习--如何实现可迭代对象(itearable)和迭代器(iterator)

关于可迭代对象Iterable 和迭代器对象iterator 可迭代对象:可以直接作用于for循环的对象统称为可迭代对象:Iterable. 可迭代对象包含一个__iter__方法,或__getitem__方法,其中__iter__方法会返回一个迭代器iterator. 可迭代对象一类是集合数据类型,如list,tuple ,dict, set,str,  另一类可迭代对象是生成器generator. 迭代器对象:可以作用于next()函数的对象都是迭代器对象.迭代器对象必须实现__next__

可迭代对象与迭代器

我们已经知道可以对 list.tuple.str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称之为遍历,也叫迭代. 不是所有的数据类型都可以放在**for…in…**中进行迭代的,比如 int 类型… 什么是可迭代对象? 通过自定义一个容器类型MyList,在将一个存放了多个数据的MyList对象放到了 for…in… 的语句中,发现 for…in… 并不能从中依次取出一条数据返回给我们,也就是说我们即便封装了一个可以存放多条数据的类型却并不能被迭代使用.

Python 迭代器协议以及可迭代对象、迭代器对象

一.迭代器协议定义: 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而来 while True: #单纯的重复 print('你瞅啥') l=['a','b','c','d'] count=0 while count < len(l): print(l[count]) count+=1 迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 二.可迭代对象定义: 实现了迭代器协议