Python学习,小甲鱼048魔法方法:迭代器

本文深入讲解Python中的迭代器概念,包括iter()函数的使用,如何通过next()获取迭代器的下一个元素,以及如何自定义迭代器实现斐波那契数列。通过实例演示,帮助读者理解迭代器的工作原理。
部署运行你感兴趣的模型镜像

1. iter() 函数

用来生成迭代器,以下是 iter() 方法的语法:

iter(object[, sentinel])
  • object -- 支持迭代的集合对象。
  • sentinel -- 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。

     
>>>lst = [1, 2, 3]
>>> for i in iter(lst):
        print(i)
  
1
2
3

 

2. next() 

返回迭代器的下一个项目。next() 函数要和生成迭代器的iter() 函数一起使用。next 语法:

next(iterable[, default])

参数说明:

  • iterable -- 可迭代对象
  • default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
     
>>> s = 'lalalaa'
>>> it = iter(s)
>>> next(it)
'l'
>>> next(it)
'a'
>>> next(it)
'l'
>>> next(it)
'a'
>>> next(it)
'l'
>>> next(it)
'a'
>>> next(it)
'a'
>>> next(it)
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    next(it)
StopIteration

 

3. 魔法方法

自己定义__iter__ 和 __next__:

class F:
    def __init__(self, n=10):
        self.a = 0
        self.b = 1
        self.n = n

    def __iter__(self):
        return self

    def __next__(self):
        self.a , self.b = self.b, self.a + self.b
        if self.a >self.n:
            raise StopIteration #使其停止
        return self.a

 

 测试:

>>> f = F()
>>> for i in f:
	print (i)
	
1
1
2
3
5
8

 

 

 

 

 

 

 

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值