我使用了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()?或者我如何修改函数以使其无论如何工作?
答案 0 :(得分:10)
您可以自己轻松提供此功能的定义:
_sentinel = object()
def next(it, default=_sentinel):
try:
return it.next()
except StopIteration:
if default is _sentinel:
raise
return default