|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 向西而笑 于 2017-8-29 21:06 编辑
48课时:迭代器
迭代的意思:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
迭代器(iterator)
python在某个可迭代对象进行迭代操作时提供了两个BIF:iter()、next()。实现了next()功能的对象就叫做迭代器。
iter():返回一个迭代器,里面的参数可以一个可迭代对象。
next():返回迭代器中的下一个元素,如果里面的元素迭代完了则抛出一个StopIteration
例子:
- >>> example = (1,2,3) #创建一个可迭代的对象
- >>> type(example)
- <class 'tuple'>
- >>> it = iter(example) #调用iter()把it变成一个迭代器
- >>> type(it)
- <class 'tuple_iterator'> #用type()查看是一个iterator
- >>> next(it) #是迭代器就可以用next()函数
- 1
- >>> next(it)
- 2
- >>> next(it)
- 3
- >>> next(it) #迭代器里的元素迭代完成就抛出了StopIterator
- Traceback (most recent call last):
- File "<pyshell#14>", line 1, in <module>
- next(it)
- StopIteration
复制代码
运用while、try except语句配合这两个方法就可以实现for循环:
- >>>example = 'FishC'
- >>> it = iter(example)
- >>> while True:
- try:
- each = next(it)
- except StopIteration:
- break
- print(each)
-
- F
- i
- s
- h
- C
复制代码
迭代器的魔法方法
名字和上面那两个是一样滴:__iter__()、__next__()。
功能也是一样的,一个容器里面都有这两个魔法方法。
小练习:斐波那契数列
- class Fibs:
- def __init__(self,n):
- 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 #当超过限制则抛出StopIteration,否则会无限循环下去
- return self.a
- fibs = Fibs(100)
- for i in fibs:
- print
复制代码
运行结果:
- =========== RESTART: C:\Users\Administrator\Desktop\draft\test.py ===========
- 1
- 1
- 2
- 3
- 5
- 8
- 13
- 21
- 34
- 55
- 89
复制代码
|
评分
-
查看全部评分
|