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