当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python itertools.islice用法及代码示例


用法:

itertools.islice(iterable, stop)
itertools.islice(iterable, start, stop[, step])

创建一个从可迭代对象中返回选定元素的迭代器。如果start 不为零,则跳过可迭代的元素,直到到达开始。之后,元素将连续返回,除非 step 设置为高于 1,从而导致项目被跳过。如果 stopNone ,则迭代继续进行,直到迭代器耗尽(如果有的话);否则,它会停在指定位置。与常规切片不同,islice() 不支持 startstopstep 的负值。可用于从内部结构已展平的数据中提取相关字段(例如,multi-line 报告可能每三行列出一个名称字段)。大致相当于:

def islice(iterable, *args):
    # islice('ABCDEFG', 2) --> A B
    # islice('ABCDEFG', 2, 4) --> C D
    # islice('ABCDEFG', 2, None) --> C D E F G
    # islice('ABCDEFG', 0, None, 2) --> A C E G
    s = slice(*args)
    start, stop, step = s.start or 0, s.stop or sys.maxsize, s.step or 1
    it = iter(range(start, stop, step))
    try:
        nexti = next(it)
    except StopIteration:
        # Consume *iterable* up to the *start* position.
        for i, element in zip(range(start), iterable):
            pass
        return
    try:
        for i, element in enumerate(iterable):
            if i == nexti:
                yield element
                nexti = next(it)
    except StopIteration:
        # Consume to *stop*.
        for i, element in zip(range(i + 1, stop), iterable):
            pass

如果 startNone ,则迭代从零开始。如果 stepNone ,则步骤默认为一。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 itertools.islice。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。