目录
简介:
- iterable 可迭代对象: 实现__iter__(self)方法的对象
- iterator同时实现 __iter__(self) 和 __next__(self) [python3]方法的对象, python2中实现 next(self) 方法
- Generator 函数 包含yield语句的函数,该函数返回一个Generator【生成器】,同时也是Iterator【迭代器】维基百科:https://wiki.python.org/moin/Generators
- 推导式:列表,集合,字典
关系:Generator是特殊的Iterator【迭代器】,同时他们都是可迭代对象,list,tuple,set,dict也是可迭代对象
1. iterable 可迭代对象:
实现了 __iter__(self) 方法的对象,在该方法中返回一个迭代器或者实现了next(python2)或者 __next__(self) (python3)的对象
常见可迭代对象:tuple,list,set,dict
from collections import Iterable, Iterator
print(isinstance(dict(), Iterable)) # True
print(isinstance(dict(), Iterator)) # False
# list, set, tuple 类似
示例:
class Test:
def __init__(self):
# 实现next方法的对象,该对象能通过next()方法调用获取下一个值,从而实现迭代
self.__max = 10
self.__cur_num = 0
def __next__(self): # python3 实现
return self.next()
def next(self): # python2 中实现
if self.__cur_num < self.__max:
tmp, self.__cur_num = self.__cur_num, self.__cur_num + 1
return tmp
else: # 用于终止循环
raise StopIteration()
class MyIterable(object):