我正在使用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'>:未定义全局名称’next’

有没有办法使用python 2.5的next()?或者我如何修改函数以使其无论如何工作?

解决方法

您可以自己轻松提供此功能的定义:

_sentinel = object()
def next(it,default=_sentinel):
    try:
        return it.next()
    except StopIteration:
        if default is _sentinel:
            raise
        return default

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。