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 に答える