一、迭代器方法
1. iter():生成可迭代对象(如列表、元组、字符串等)的迭代器
>>> string = 'wang'
>>> it = iter(string)
>>> it
<str_iterator object at 0x0326CC50>
2. next():迭代器动作,默认为依次获取迭代器中的各个元素,当所有元素获取完成后,抛出StopIteration异常
>>> next(it)
'w'
>>> next(it)
'a'
>>> next(it)
'n'
>>> next(it)
'g'
>>> next(it)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
next(it)
StopIteration
试验:用while语句实现for循环:
>>> while True:
try:
each = next(it)
except StopIteration:
break
print(each)
w
a
n
g
二、迭代器的魔法方法
1. __iter__()
2.__next__()
例子:
>>> class Fibs:
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
>>> fibs= Fibs()
>>> for each in fibs:
print(each)
1
1
2
3
5
8
>>> fibs = Fibs(100)
>>> for each in fibs:
print(each)
1
1
2
3
5
8
13
21
34
55
89
>>>