代码之家  ›  专栏  ›  技术社区  ›  George Mauer

迭代器的cdr/rest等价物

  •  0
  • George Mauer  · 技术社区  · 7 年前

    iter = itertools.count() )我可以拿第一个 next(iter) 第一个?

    def rest(iter):
      next(iter)
      return (x for x in iter)
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   gilch    7 年前

    first, *rest = iter
    

    但这实现了整个迭代器-- rest

    itertools.islice

    >>> from itertools import islice
    >>> [*range(9)]
    [0, 1, 2, 3, 4, 5, 6, 7, 8]
    >>> [*islice(range(9), 1, None)]
    [1, 2, 3, 4, 5, 6, 7, 8]
    

    islice

    >>> spam = iter(range(9))
    >>> next(spam)
    0
    >>> [*spam]
    [1, 2, 3, 4, 5, 6, 7, 8]