6

イテレータで関数を使用しようとしていnextますが、同じスコープ内に という名前のローカル変数がありnextます。明らかな解決策は、ローカル変数の名前を変更することですが、私は Python にかなり慣れていないnextので、目的の動作を実現するために関数にプレフィックスを付ける方法を知りたいと思っています。

私が使用しているコードは次のようになります。

for prev, curr, next in neighborhood(list):
    if (prev == desired_value):
        print(prev+" "+next)
        desired_value = next(value_iterator)

Python 3.2 を使用していることに注意してください。

4

3 に答える 3

10

組み込み関数__builtins__.nextの参照に使用できます。next

for prev, curr, next in neighborhood(list):
    if (prev == desired_value):
        print(prev+" "+next)
        desired_value = __builtins__.next(value_iterator)

ただし、ご指摘のとおり、明らかな解決策は、変数に別の名前を使用することです。

于 2012-07-12T21:35:57.967 に答える
6

next()イテレータのメソッドを直接呼び出すことができます。StopIterationただし、デフォルト値を表示するために、反復の最後に抑制する機能は失われます。

desired_value = value_iterator.next()

Python 3 では、このメソッドの名前が に変更されたことに注意してください__next__()

于 2012-07-12T21:53:13.437 に答える
2

次に何かを割り当てる前に、次のようなものを使用します。

real_next = next
于 2012-07-12T21:56:37.273 に答える