首页 > 编程语言 >Python基础入门学习笔记 048 魔法方法:迭代器

Python基础入门学习笔记 048 魔法方法:迭代器

时间:2023-08-23 11:12:51浏览次数:49  
标签:__ 迭代 Python self each iter next 048

迭代的意思类似于循环,每一次重复的过程被称为一次迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。提供迭代方法的容器称为迭代器(如序列(列表、元组、字符串)、字典等)。

对一个容器对象调用iter()就得到它的迭代器,调用next()迭代器就会返回下一个值。入托迭代器没有值可以返回了,就会抛出异常。

•iter()

–__iter__()

•next()

–__next__()

实例1:

 1 >>> string = "FishC"
 2 >>> it = iter(string)
 3 >>> next(it)
 4 'F'
 5 >>> next(it)
 6 'i'
 7 >>> next(it)
 8 's'
 9 >>> next(it)
10 'h'
11 >>> next(it)
12 'C'
13 >>> next(it)
14 Traceback (most recent call last):
15   File "<pyshell#8>", line 1, in <module>
16     next(it)
17 StopIteration

一个容器如果是迭代器,那就必须实现__iter__()魔法方法,这个方法实际上就是返回迭代器本身。重点要实现的是__next__()魔法方法,因为它决定了迭代的规则。

实例2:

 1 >>> class Fibs:
 2     def __init__(self):
 3         self.a = 0
 4         self.b = 1
 5     def __iter__(self):
 6         return self
 7     def __next__(self):
 8         self.a,self.b = self.b,self.a + self.b
 9         return self.a
10 
11     
12 >>> fibs = Fibs()
13 >>> for each in fibs:
14     if each < 20:
15         print(each)
16     else:
17         break

1
1
2
3
5
8
13

实例3:

 1 >>> class Fibs:
 2     def __init__(self,n =20):
 3         self.a = 0
 4         self.b = 1
 5         self.n = n
 6     def __iter__(self):
 7         return self
 8     
 9     def __next__(self):
10         self.a,self.b = self.b,self.a + self.b
11         if self.a > self.n:
12             raise StopIteration
13         return self.a
14 
15     
16 >>> fibs = Fibs()
17 >>> for each in fibs:
18     print(each)

1
1
2
3
5
8
13

1 >>> fibs = Fibs(10)
2 >>> for each in fibs:
3     print(each)

1
1
2
3
5
8

标签:__,迭代,Python,self,each,iter,next,048
From: https://www.cnblogs.com/ybqjymy/p/17650663.html

相关文章

  • Python基础入门学习笔记 049 乱入:生成器
    所谓协同程序,就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。生成器可以暂时挂起函数,并保留函数的局部变量等数据,然后在再次调用它的时候,从上次暂停的位置继续执行下去。一个函数中如果有yield语句,则被定义为生成器。实例1:......
  • Python基础入门学习笔记 050 模块:模块就是程序
    什么是模块•容器->数据的封装•函数->语句的封装•类->方法和属性的封装•模块->模块就是程序命名空间爱的宣言:世界上只有一个名字,使我这样牵肠挂肚,像有一根看不见的线,一头牢牢系在我心尖上,一头攥在你手中,这个名字就叫做鱼C工作室计算机一班的小花……导入模块•......
  • Python学习 -- 类的继承
    类继承是面向对象编程中的重要概念,它允许我们创建一个新的类,通过继承已有的类的属性和方法,从而实现代码的重用和扩展。Python作为一门面向对象的编程语言,提供了强大而灵活的类继承机制。本篇博客将深入探讨Python中类继承的概念,通过详细的代码实例演示其用法。基本的类继承首先,让我......
  • Python基础入门学习笔记 039 类和对象:拾遗
    组合(将需要的类一起进行实例化并放入新的类中)实例:1classTurtle:2def__init__(self,x):3self.num=x45classFish:6def__init__(self,x):7self.num=x89classPool:10def__init__(self,x,y):11self.tu......
  • Python-OpenCV双目测距代码实现以及参数解读
    一、双目相机拍照后使用Matlab进行双目标定必看:USB双目相机的具体标定过程:https://blog.csdn.net/qq_40700822/article/details/124251201?spm=1001.2014.3001.5501主要参考:https://blog.csdn.net/dulingwen/article/details/98071584感谢大佬的分享!!!(*≧ω≦)!!二、标定后生成......
  • Python基础入门学习笔记 040 类和对象:一些相关的BIF
    一些相关的BIFissubclass(class, classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False1>>>classA:2pass34>>>classB(A):5pass67>>>issubclass(B,A)8True9>>>issubclass(B,B)#......
  • Python基础入门学习笔记 041 魔法方法:构造和析构
     __init__(self[,...]) 方法是类在实例化成对象的时候首先会调用的一个方法1>>>classRectangle:2def__init__(self,x,y):3self.x=x4self.y=y5defgetPeri(self):6return(self.x+self.y)*27defgetArea......
  • Python基础入门学习笔记 038 类和对象:继承
    继承         子类               父类class DerivedClassName(BaseClassName):……实例:一个子类可以继承它的父类的所有属性和方法1>>>classParent:2defhello(self):3print('正在调用父类的方法......
  • Python基础入门学习笔记 036 类和对象:给大家介绍对象
    给大家介绍对象把乱七八糟的数据扔进列表里,称数据层面的封装把常用的代码段打包成一个函数,称语句层面的封装把数据和代码都封装在一起,称对象层面的封装对象 = 属性 + 方法对象可以从静态(属性)与动态(方法)两个特征来描述 OO(面向对象)的特征继承class Turtle:#Pytho......
  • Python基础入门学习笔记 037 类和对象:面向对象编程
    self是什么?Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。1>>>classBall:2defsetName(self,name):3self......