python可迭代对象和迭代器
2017-10-16 08:59
459 查看
1. iter函数
iter 函数只是调用对象的
2. 可迭代对象
一个对象实现了__iter__方法,就是可迭代的,可以使用for循环访问对象中的每个元素,其实质是调用iter函数使对象返回一个迭代器,再使用迭代器进行循环。
3. 迭代器:实现了__next__()方法,调用该方法时,直到对象没有可调用的元素就返回异常StopIteration
>>> st = 'Hello'
>>> for i in st:
... print(i)
...
H
e
l
l
o
>>> next(st)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not an iterator
>>> st = iter(st)
>>> next(st)
'H'
>>> next(st)
'e'
>>> next(st)
'l'
>>> next(st)
'l'
>>> next(st)
'o'
>>> next(st)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
示例:自定义迭代器返回斐波那契数列
>>> 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
... else:
... return self.a
...
>>> f = Fibs(20)
>>> for i in f:
... print(i)
...
1
1
2
3
5
8
13
iter 函数只是调用对象的
__iter__方法,这个方法按照协议会返回一个迭代器,使得for循环这样的语法结构能够进行下去。
2. 可迭代对象
一个对象实现了__iter__方法,就是可迭代的,可以使用for循环访问对象中的每个元素,其实质是调用iter函数使对象返回一个迭代器,再使用迭代器进行循环。
3. 迭代器:实现了__next__()方法,调用该方法时,直到对象没有可调用的元素就返回异常StopIteration
>>> st = 'Hello'
>>> for i in st:
... print(i)
...
H
e
l
l
o
>>> next(st)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not an iterator
>>> st = iter(st)
>>> next(st)
'H'
>>> next(st)
'e'
>>> next(st)
'l'
>>> next(st)
'l'
>>> next(st)
'o'
>>> next(st)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
示例:自定义迭代器返回斐波那契数列
>>> 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
... else:
... return self.a
...
>>> f = Fibs(20)
>>> for i in f:
... print(i)
...
1
1
2
3
5
8
13
相关文章推荐
- python中的迭代器和可迭代对象
- python学习笔记--可迭代对象和迭代器的理解
- 【python】14、完全理解可迭代对象、迭代器、生成器
- 一张图明白python 生成器/迭代器/可迭代对象 之间的关系
- Python 中 生成器、迭代器、可迭代对象 的概念
- 【python】 可迭代对象、迭代器、生成器
- 深入理解Python迭代器和可迭代对象
- Python可迭代对象、迭代器和生成器
- Python 迭代器协议以及可迭代对象、迭代器对象
- Python特性学习——可迭代对象,迭代器(重新修正)
- Python学习之迭代对象、迭代器、生成器
- python 3-2 如何实现可迭代对象和迭代器对象(2) BookIterable/BookIterator
- Python 可迭代的对象、迭代器和生成器
- python 可迭代对象与迭代器
- 完全理解 Python 迭代对象、迭代器、生成器
- 完全理解 Python 迭代对象、迭代器、生成器
- Python迭代对象、迭代器、生成器
- Python可迭代对象,迭代器,生成器的区别
- Python迭代器,可迭代对象,生成器
- Python中可迭代对象、迭代器和生成器相关