PHP前端开发

python迭代器的实例详解

百变鹏仔 3小时前 #Python
文章标签 详解

可直接作用于for循环的对象叫做可迭代对象(iterable);

可被next()函数调用并不断返回下一个值的对象称为迭代器(iterator);

所有的可迭代对象均可以通过内置函数iter()来转变为迭代器。

在使用for循环的时候,程序就会自动调用即将处理的对象的迭代器对象,然后使用它的next()方法,直到检测一个stoplteration异常。

&gt;&gt;&gt; l = [4,5,6,7,8,9,0]   #这是一个列表&gt;&gt;&gt; i = iter(l)                 #可迭代对象转换为迭代器;&gt;&gt;&gt; next(i)4&gt;&gt;&gt; next(i)5&gt;&gt;&gt; next(i)6&gt;&gt;&gt; next(i)7&gt;&gt;&gt; next(i)8&gt;&gt;&gt; next(i)9&gt;&gt;&gt; next(i)0&gt;&gt;&gt; next(i)Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration</module></stdin>

因为列表中么有超过0的数字,所以当范围超过的话,就会返回一个StopIteration异常。

立即学习“Python免费学习笔记(深入)”;

在生产环境中如何判断呢

&gt;&gt;&gt; L = [4,5,6]&gt;&gt;&gt; I = L.__iter__()&gt;&gt;&gt; L.__next__()Traceback (most recent call last):  File "<stdin>", line 1, in <module>AttributeError: 'list' object has no attribute '__next__'&gt;&gt;&gt; I.__next__()4&gt;&gt;&gt; from collections import Iterator, Iterable&gt;&gt;&gt; isinstance(L, Iterable)True&gt;&gt;&gt; isinstance(L, Iterator)False&gt;&gt;&gt; isinstance(I, Iterable)True&gt;&gt;&gt; isinstance(I, Iterator)True&gt;&gt;&gt; [x**2 for x in I]    [25, 36]</module></stdin>