关于网站建设的文案,深圳建网站兴田德润专业,天津建设工程交易信息网,虚拟主机空间免费我们在前面使用过语句“for x in列表对象”#xff0c;这就表示列表对象是可迭代的(Iterable)。那么如何判断某个对象是否可迭代呢#xff1f;答案是可以使用collections.Iterable类来判断。如下面的代码所示#xff0c;列表是可迭代的#xff0c;整数是不可迭代的#xf…我们在前面使用过语句“for x in列表对象”这就表示列表对象是可迭代的(Iterable)。那么如何判断某个对象是否可迭代呢答案是可以使用collections.Iterable类来判断。如下面的代码所示列表是可迭代的整数是不可迭代的字符串是可迭代的。 from collections import Iterable # 引入Iterable类 isinstance([], Iterable) # 列表是可迭代的True isinstance(12, Iterable) # 整数是不可迭代的False isinstance(12, Iterable) # 字符串是可迭代的True另外一个概念是迭代器(Iterator)。它可以作为内置函数 next() 的参数每次按照一定顺序得到其中一个元素。但比较有趣的是列表不是迭代器。同样可以用 collections.Iterator 类来判断某个对象是否是迭代器。如下面的代码所示列表和字符串都不是迭代器 from collections import Iterator # 引入Iterator类 isinstance([], Iterator) # 列表不是迭代器False isinstance(abc, Iterator) # 字符串也不是迭代器False那么列表是否可以作为 next() 的参数呢答案是不可以。例如下面的代码 a [1, 2, 3] # 创建列表对象a next(a) # 使用内置的next()接口函数发生错误Traceback (most recent call last):File , line 1, in TypeError: list object is not an iterator这比较容易理解因为我们没有指定当前位置但可以使用另外一个内置函数 iter() 来将其转换成 Iterator。下面的代码演示了这种用法 from collections import Iterable # 引入Iterable和Iterator类 from collections import Iterator a [1, 2, 3] # 创建列表对象a isinstance(a, Iterable) # 列表对象是可迭代的True isinstance(a, Iterator) # 列表对象不是迭代器False it_a iter(a) # 从列表对象得到迭代器it_a isinstance(it_a, Iterable) # it_a是可迭代的也是迭代器True isinstance(it_a, Iterator)True type(it_a) # it_a是列表型迭代器 next(it_a) # 得到一个数据1 it_a.next() # 使用另外一种方式得到一个数据2 next(it_a)3 next(it_a) # 没有数据了抛出异常Traceback (most recent call last):File , line 1, in StopIteration迭代器的一个特点是它只能使用一次从头部走到尾部。如果希望再次走一遍只能创建一个新的迭代器。