优点:迭代器存储的是生成数据的方式(可以迭代的对象),并不是存储结果,很有效的减少内存的使用。
注意:可以迭代的对象不一定是迭代器,但是迭代器一定可以迭代。
迭代器一定含有iter()和next()方法
判断是否可迭代:isinstance([100, 1, 2], Iterable),返回True是迭代否则不是
eg.示例1,不是迭代器的迭代:
from collections import Iterable
# Classmate含有iter可以迭代,但不是迭代器
class Classmate(object):
def __init__(self):
self.names = list()
def __add__(self, name):
self.names.append(name)
# 当对象可以进行迭代循环时,必须要含有iter方法并进行循环。
def __iter__(self):
return ClassIterable(self)
class ClassIterable(object):
def __init__(self, obj):
self.obj = obj
# 定义全局变量,初始化之后,值在程序执行过程中发生变化了,也会保存变化的最终值
self.current_num = 0;
def __iter__(self):
self.__iter__();
def __next__(self):
if self.current_num < len(self.obj.names):
ret &#