4.8 跳过可迭代对象的开始部分

    模块中有一些函数可以完成这个任务。首先介绍的是 itertools.dropwhile() 函数。使用时,你给它传递一个函数对象和一个可迭代对象。它会返回一个迭代器对象,丢弃原有序列中直到函数返回Flase之前的所有元素,然后返回后面所有元素。

    为了演示,假定你在读取一个开始部分是几行注释的源文件。比如:

    如果你想跳过开始部分的注释行的话,可以这样做:

    在这个例子中, 函数最后那个 None 参数指定了你要获取从第3个到最后的所有元素,如果 None 和3的位置对调,意思就是仅仅获取前三个元素恰恰相反,(这个跟切片的相反操作 和 [:3] 原理是一样的)。

    函数 dropwhile() 和 其实就是两个帮助函数,为的就是避免写出下面这种冗余代码:

    跳过一个可迭代对象的开始部分跟通常的过滤是不同的。比如,上述代码的第一个部分可能会这样重写:

    最后需要着重强调的一点是,本节的方案适用于所有可迭代对象,包括那些事先不能确定大小的,比如生成器,文件及其类似的对象。

    原文: