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 回答