Python中next()的范围

ast*_*y13 6 python iterator

我试图next在迭代器上使用该函数,但是,我在同一范围内有一个也被命名的局部变量next.显而易见的解决方案是重命名局部变量,但是,我对Python很新,所以我很想学习如何为next函数添加前缀,以便实现所需的行为.

我正在使用的代码看起来像这样:

for prev, curr, next in neighborhood(list):
    if (prev == desired_value):
        print(prev+" "+next)
        desired_value = next(value_iterator)
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是Python 3.2.

Mar*_*ers 10

您可以使用它__builtins__.next来引用next内置函数.

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

但是,正如您所指出的,显而易见的解决方案是为变量使用不同的名称.


kin*_*all 6

您可以next()直接调用迭代器的方法.但是,您失去StopIteration了在迭代结束时抑制的能力,有利于查看默认值.

desired_value = value_iterator.next()
Run Code Online (Sandbox Code Playgroud)

请注意,在Python 3中,此方法已重命名__next__().