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

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

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值