迭代(Iteration)
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)
,
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
方法是通过collections.abc
模块的Iterable
类型判断,一个对象是否为可迭代对象
>>> from collections.abc import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
一种节省内存的可迭代对象生成器(generator)
如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator
生成器不能直接打印,需要next()
函数获得下一个元素,直到抛出StopIteration
异常
或者使用for
循环进行遍历,因为generator
也是可迭代的(Iterable)