Python中next()的范围

时间:2012-07-12 21:33:53

标签: 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)

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

3 个答案:

答案 0 :(得分:10)

您可以使用__builtins__.next来引用next内置功能。<​​/ p>

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

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

答案 1 :(得分:6)

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

desired_value = value_iterator.next()

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

答案 2 :(得分:2)

在为下一步分配内容之前,请使用以下内容:

real_next = next