7

我正在使用来自 itertools 的成对配方的略微修改版本,看起来像这样

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b) 

现在事实证明,我需要使用python 2.5运行代码,其中 next() 函数会引发以下异常:

<type 'exceptions.NameError'>: global name 'next' is not defined

有没有办法在 python 2.5 中使用 next() ?或者我需要如何修改函数以使其正常工作?

4

1 回答 1

11

您可以自己轻松地提供此函数的定义:

_sentinel = object()
def next(it, default=_sentinel):
    try:
        return it.next()
    except StopIteration:
        if default is _sentinel:
            raise
        return default
于 2012-07-25T14:48:48.190 回答