我目前正在学习CS50's Introduction to Artificial Intelligence with Python。我遇到了一行对我来说毫无意义的代码,我似乎无法在网上找到任何资源来向我解释这一点
def contains_state(self,state):
return any(node.state == state for node in self.frontier)
这是Python类中的一个方法。让我困惑的是我如何理解node.state == state for node in self.frontier
我对any()的理解是,它检查正在迭代的任何元素是否为真,但上面的代码是如何工作的
非常感谢你的帮助
self.frontier
是一个iterablenode.state == state for node in self.frontier
通过self.frontier
进行迭代,并根据状态是否匹配创建一个新的真值和假值列表如果该列表中的任何一个包含True,则
any(...)
返回True这大致相当于:
这里发生了几件事:
函数的返回值:
any(node.state == state for node in self.frontier)
如果列表“self.frontier”中的任何“节点”中的“note.value”与输入参数“state”的值相同,则返回“true”
我希望这有助于
any中的代码是具有布尔值(True或False)的生成器对象。在执行for循环时,如果有
node.state == state
,contains_state返回True
与列表相比,使用生成器的优点是,如果您找到的节点的状态等于您要查找的状态,则不必遍历每个元素。因此,在某些/大多数情况下,它会运行得更快
如果它经过整个循环,并且没有一个节点的状态等于传递给
contains_state
的状态,则函数返回False
。您可以了解有关生成器here的更多信息相关问题 更多 >
编程相关推荐