这是什么 .next() 什么是迭代器?力扣代码 284
what is this .next() and what is the iterator ? leetcode 284
尝试“LeetCode 284. 窥视迭代器”:https://leetcode.com/problems/peeking-iterator/
参考解决方案:
01. class PeekingIterator(object):
02. def __init__(self, iterator):
03. self.iter = iterator
04. self.temp = self.iter.next() if self.iter.hasNext() else None
05.
06. def peek(self):
07. return self.temp
08.
09. def next(self):
10. ret = self.temp
11. self.temp = self.iter.next() if self.iter.hasNext() else None
12. return ret
13.
14. def hasNext(self):
15. return self.temp is not None
我有两个问题:
第 4 行:self.iter.next()
。 .next()
是指 line 9
中的方法吗?我尝试放置打印语句,但发现打印语句仅在 Leetcode 调用 line 9 def next(self):
而不是 line 4
时调用。所以在我看来 .next()
是一个 Python 内置迭代器函数。但是没有这样的功能。这就是我感到困惑的原因。最重要的是,如果它是 line 9
中的方法,它将被迭代调用,但它似乎并没有这样做(查看打印语句)。
第二题比较复杂。在 line 2
处创建 class 的输入是 [[1,2,3]]
这是一个 Python 列表。然而在 __init__
中,我无法执行迭代器 [0] 或 next(iterator)
。所以我很困惑为什么会这样。我收到以下错误:
但我可以print(f'{iterator.next()=}')
所以我的第二个问题是 __init__
到底收到了什么。它不是列表和迭代器。
抱歉我的问题很长。我希望我已经足够清楚地解释了我的问题。在此先感谢您的帮助。
看起来有问题的代码实现了自己的 Iterator
class,它具有 .next()
方法并将 [1,2,3]
输入转换为此 class 的实例.这也是第 4 行中的 self.iter.next()
调用的内容。您必须使用给定的界面。
这个习惯 class 是 next(iterator)
不起作用的原因(因为 sit 没有实现 __iter__
和 __next__
方法)以及 iterator[0]
(因为它不再是输入数组)
它实现了 iterator.next()
,就像您的 PeekingIterator
应该的那样。
你得到的是一个Iterator
,与pythoniterator
完全无关,他们可以(也许应该)称它为ClassWithNextAndHasNextMethods
.您在 __init__
.
中收到了 class 的一个实例
不,self.iter.next()
不是指第 9 行,self.next()
会那样做。 self.iter.next()
正在对传递给构造函数的对象调用 next()
方法。
尝试“LeetCode 284. 窥视迭代器”:https://leetcode.com/problems/peeking-iterator/
参考解决方案:
01. class PeekingIterator(object):
02. def __init__(self, iterator):
03. self.iter = iterator
04. self.temp = self.iter.next() if self.iter.hasNext() else None
05.
06. def peek(self):
07. return self.temp
08.
09. def next(self):
10. ret = self.temp
11. self.temp = self.iter.next() if self.iter.hasNext() else None
12. return ret
13.
14. def hasNext(self):
15. return self.temp is not None
我有两个问题:
第 4 行:
self.iter.next()
。.next()
是指line 9
中的方法吗?我尝试放置打印语句,但发现打印语句仅在 Leetcode 调用line 9 def next(self):
而不是line 4
时调用。所以在我看来.next()
是一个 Python 内置迭代器函数。但是没有这样的功能。这就是我感到困惑的原因。最重要的是,如果它是line 9
中的方法,它将被迭代调用,但它似乎并没有这样做(查看打印语句)。第二题比较复杂。在
line 2
处创建 class 的输入是 [[1,2,3]]
这是一个 Python 列表。然而在 __init__
中,我无法执行迭代器 [0] 或 next(iterator)
。所以我很困惑为什么会这样。我收到以下错误:
但我可以print(f'{iterator.next()=}')
所以我的第二个问题是 __init__
到底收到了什么。它不是列表和迭代器。
抱歉我的问题很长。我希望我已经足够清楚地解释了我的问题。在此先感谢您的帮助。
看起来有问题的代码实现了自己的 Iterator
class,它具有 .next()
方法并将 [1,2,3]
输入转换为此 class 的实例.这也是第 4 行中的 self.iter.next()
调用的内容。您必须使用给定的界面。
这个习惯 class 是 next(iterator)
不起作用的原因(因为 sit 没有实现 __iter__
和 __next__
方法)以及 iterator[0]
(因为它不再是输入数组)
它实现了 iterator.next()
,就像您的 PeekingIterator
应该的那样。
你得到的是一个Iterator
,与pythoniterator
完全无关,他们可以(也许应该)称它为ClassWithNextAndHasNextMethods
.您在 __init__
.
不,self.iter.next()
不是指第 9 行,self.next()
会那样做。 self.iter.next()
正在对传递给构造函数的对象调用 next()
方法。