node.state == state for node in self.frontier
- генератор с методом __next__
. Когда что-то вызывает __next__
, генератор выбирает значение из self.frontier
, сравнивает свою переменную state
с state
и возвращает результат. Когда self.frontier
повышает StopIteration
, это исключение передается вызывающей стороне.
any()
- потребитель. Он вызывает __next__
до тех пор, пока что-то не станет истинным, и не вернет True. Если __next__
повышает StopIteration
, возвращается False
.
Пример
>>> state = 'foo'
>>> frontier = ['bar', 'bar', 'foo', 'bar']
>>> gen = (value == state for value in frontier)
>>> type(gen)
<class 'generator'>
>>> gen.__next__()
False
>>> gen.__next__()
False
>>> gen.__next__()
True
>>> gen.__next__()
False
>>> gen.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>
>>> any(value == state for value in frontier)
True