当前位置: 首页 > 网络知识

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

时间:2026-01-29 09:25:52

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

对一个容器对象调用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基础入门学习笔记 064 GUI的终极选择:Tkinter
下一篇:Python基础入门学习笔记 040 类和对象:一些相关的BIF
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素