當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。