itertools
模块包含许多用于生成有限序列的函数,下面介绍其中10个函数,以及几个相关的内置函数。
enumerate()
:实际上该函数在__builtins__
包中,但可以应用于迭代器,且用法与itertools
模块中的其他函数类似。accumulate()
:返回作为输入的可迭代对象的归约序列,它是高阶函数,能完成很多复杂的计算。chain()
:将多个可迭代对象按顺序组合在一起。groupby()
:将输入的可迭代对象按照指定函数分割为多个子迭代对象。zip_longest()
:将多个可迭代对象中的元素合并在一起,内置的zip()
函数按照最短输入值进行截断,zip_longest()
函数则对较短的可迭代对象插入填充值。compress()
:根据第二个布尔可迭代对象形式的输入参数对第一个可迭代对象进行筛选。islice()
:序列切片函数的可迭代对象版本。dropwhile()
和takewhile()
:使用布尔函数过滤可迭代对象。与filter()
和filterfalse()
这类过滤函数不同,布尔值会影响对后续所有值的筛选。filterfalse()
:对可迭代对象应用过滤函数,其返回结果与filter()
函数的返回结果相反。starmap()
:将函数应用于由元组组成的可迭代序列。序列的每个元素以*args
的形式作为函数的参数,map()
函数通过提供多个并列的可迭代参数可以实现相同的功能。
之前根据对可迭代对象进行的重组、过滤和映射操作,大致将这些函数分成了三类。