您的位置:首页 > 编程语言 > Python开发

Python学习笔记 迭代器

2015-03-21 21:13 288 查看

Python学习笔记 迭代器

iter和next:

iter方法可以生成一个迭代器,用next取得下一个元素,当next超过范围后,会出现异常

如:

>>> string = "cxy"
>>> it = iter(string)
>>> next(it)
'c'
>>> next(it)
'x'
>>> next(it)
'y'
>>> next(it)
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
next(it)
StopIteration


一个不会出异常的方法:

>>> while True:
try:
each = next(it)
except StopIteration:
break
print(each)

c
x
y
>>>


一个斐波那契数列的迭代器的实现:

>>> class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b
return self.a

>>> fibs = Fibs()
>>> for each in fibs:
if each < 20:
print(each)
else:
break

1
1
2
3
5
8
13
>>>


改进版,一个带迭代上限的迭代器:

>>> 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
>>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: