l=[1,2,3,4] for n in l: print n 在看上面这段代码的时候,我们没有显式的控制列表的偏移量,就可以自动的遍历了整个列表对象.那么for 语句是怎么来遍历列表l的呢?要回答这个问题,我们必须首先来看一下迭代器相关的知识. 1.迭代器 迭代器对象要求支持迭代器协议,所谓支持迭代器协议就是对象包含__iter__()和next()方法.其中__iter__()方法返回迭代器对象自己:next()方法返回下一个前进到下一个结果,在结尾时引发StopIteration异常. 列…
#!/usr/bin/python def power(values): for value in values: print "powing %s" % value yield value def add(values): for value in values: if value % 2 == 0: yield value + 3 else: yield value + 2 elements = [1, 4, 7, 9, 12, 19] add(power(elements)) f…
一.迭代器与for语句 网上许多文章说Python的for语句中,in关键字后面的对象是一个集合.例如 for i in [1,2,3] print i 上面代码中in关键字后面的对象[1,2,3]是一个list,也是一个集合. 但in关键字后面的对象其实不必是一个集合.后面接一个序列对象也是合法的. 例如 myrange = MyRange(0, 10) for i in myrange: print i 上面代码中的myrange对象是一个序列对象,但不是集合.参见上一篇博文. 事实上,fo…