Python中的可迭代对象与迭代器对象

刚刚学习Python,对“可迭代对象”和"迭代器对象"的个人理解,不知道对不对。

1.几个概念

1.迭代工具:包括for循环、列表解析、in成员关系测试.....等等在内的,用于依次访问可迭代对象(容器)内元素的操作(?)。

2.迭代器对象:具有__next__()方法的对象。该方法能够自动返回下一个结果,当到达序列结尾时,引发StopIteration异常。

3.可迭代对象:具有__iter__()方法的对象。该方法可获取其迭代器对象。

2.迭代过程(以for循环为例)

for循环开始:自动调用可迭代对象的__iter__()方法以获取其迭代器对象(含有next方法)

for循环:自动调用迭代器对象的__next__()方法获取下一个元素

for循环结束:当__next__()调用引发StopIteration异常时,结束循环。

3.几点说明

(1)可迭代对象也可以是迭代器对象,如文件对象。此时可迭代对象自己有__next__()方法,而其__iter__()方法返回的就是它自己

(2)对于许多内置对象及其派生对象,如list、dict等,由于需要支持多次打开迭代器,因此自己并非迭代器对象,需要用__iter__()方法返回其迭代器对象,并用迭代器对象来访问其它元素。

时间: 2024-10-15 05:41:19

Python中的可迭代对象与迭代器对象的相关文章

探寻Python中如何同时迭代多个iterable对象

题外话: 最近因为课程需要开始深入了解Python语言.因为以前一直用的Java.C++等强类型的静态语言,现在突然使用Python确实感受到了很大的不同. 直观感觉就是,在Python中总是能找到一些让代码变得精巧.简洁.高效.美观的写法,使得初学者在写代码的过程充满了惊喜,从而渐渐喜欢上Python.而且Python的官方手册阅读起来感觉非常好,很多问题都描述的很清楚.不过总体来说,还是觉得Java大法好:) Python中一个非常有用的语法就是for in循环跟iterable对象的结合,

Python基础第九天——迭代对象、 迭代器对象、生成器、三元表达式列表解析、生成器表达式

鸡汤: 要时刻不断地给自己灌输一种思想:都TMD是个人,凭什么他会而我就不会?王候将相宁有种乎?我承认人有天赋的差别,但是勤奋能弥补缺陷!所以,根据以上观点得出以下结论,只要出生时不是个傻子,那么就没有蠢的人,只有懒的猪!只要勤奋上进,小白也会变大神.加油 --奔跑吧小白 一.迭代对象.迭代器对象 1.迭代 定义:带有__iter__方法的就是可迭代对象 python常用的数据类型中,除了数字外,都是迭代对象. 例:用isinstance判断python常用数据类型是否为迭代对象,经验证,pyt

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

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

迭代器、可迭代对象、迭代器对象、生成器、生成器表达式和相关的面试题

迭代器: 迭代的工具.迭代是更新换代,如你爷爷生了你爹,你爹生了你,迭代也可以说成是重复,并且但每一次的重复都是基于上一次的结果来的.如计算机中的迭代开发,就是基于软件的上一个版本更新.以下代码就不是迭代,它只是单纯的重复 可迭代对象 python中一切皆对象,对于这一切的对象中,但凡有__iter__方法的对象,都是可迭代对象. 可迭代的对象:Python内置str.list.tuple.dict.set.file都是可迭代对象. 迭代器对象 只有字符串和列表都是依赖索引取值的,而其他的可迭代

搞懂python中的可迭代对象和迭代器对象(即迭代器)

可迭代的对象和迭代器解惑: 可迭代的对象:常见的可以被for循环迭代的一些数据类型都是可迭代的对象,如列表,元组,字典,集合,字符串,生成器,range函数生成的数列等,从广泛的意义上来说,这些对象都有一个内置的iter方法,且该方法可以返回一个迭代器对象,当用iter(可迭代对象)调用这个对象时,会返回一个迭代器对象(属于Iterator类) for语句的原理就是先用iter函数获取可迭代对象的迭代器,然后调用next函数,此函数自动调用迭代器对象的next方法,每次遍历都返回相应的值,如果没

可迭代对象,迭代器(对象),生成器(对象)

迭代器 可迭代对象:可迭代对象实现了__iter__方法,该方法返回一个迭代器对象. 迭代器: 那么什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常. a = ['aaa', 'bbb', 'ccc'] my_iter

迭代器,可迭代对象,迭代器对象和生成器

1  迭代器 迭代的定义:迭代是一个重复的过程,不同于其他纯粹的重复,迭代的每一次结果都是基于上一次迭代的结果产生的. 迭代器就是一个可以进行迭代取值的工具 作用:给我们提供了一种不依赖索引取值的方式 补充:针对双下划线开头,双下滑线结尾的方法 推荐读:双下+方法名 2 可迭代对象 内置有__iter__方法的对象(列表,词典,元组,字符串,集合等) 3 迭代器对象 即内置有__iter__方法也内置有__next__方法的对象(文件,类等) 注意:迭代器对象一定是可迭代对象,但可迭代对象不一定

python中通过元类(TYPE)简单实现对象关系映射(ORM)

ORM是创建一个实例对象,用创建他的类名当做数据表名,用创建他的类属性对应数据表的字段,不需要在自己写复杂的sql语句,而是通过对实例对象的操作时,能让代码自动帮我们整理为对应的sql语句. class User(父类): uid = ("uid", "int unsigned") name = ("username", "varchar(20)") password = ("password", &quo

python中实现可迭代对象的方法

当对元组,列表,字典,集合,字符串使用for循环语句的时候,可以依次拿到里面的数据,这样的过程称为遍历,也叫迭代. 想要让创建出来的类的实例对象可以迭代,也就是可以使用for来遍历,需要在类中实现__iter__方法,需要实现__next__方法. class Classmates(): def __init__(self): self.name = [] self.current_num = 0 def add(self, name): self.name.append(name) def _