yieldPython中关键字的用途是什么?它有什么作用?
例如,我试图理解这段代码1:
def _get_child_candidates(self, distance, min_dist, max_dist):
if self._leftchild and distance - max_dist < self._median:
yield self._leftchild
if self._rightchild and distance + max_dist >= self._median:
yield self._rightchild
Run Code Online (Sandbox Code Playgroud)
这是来电者:
result, candidates = [], [self]
while candidates:
node = candidates.pop()
distance = node._get_dist(obj)
if distance <= max_dist and distance >= min_dist:
result.extend(node._values)
candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)
_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?
1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.
我有一些python代码,我试图移植到Julia学习这种可爱的语言.我在python中使用了生成器.移植后,在我看来(此时此刻)Julia在这个区域真的很慢!
我将部分代码简化为本练习:
想想4x4棋盘.找到每一个N-move长路,国际象棋王可以做到.在这个练习中,国王不允许在一条路径中的同一位置跳跃两次.不要浪费记忆 - >制作每条路径的发电机.
算法非常简单:
如果我们用数字签署每个位置:
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 16
Run Code Online (Sandbox Code Playgroud)
点0有3个邻居(1,4,5).我们可以为每个点找到每个邻居的表:
NEIG = [[1, 4, 5], [0, 2, 4, 5, 6], [1, 3, 5, 6, 7], [2, 6, 7], [0, 1, 5, 8, 9], [0, 1, 2, 4, 6, 8, 9, 10], [1, 2, 3, 5, 7, 9, 10, 11], [2, 3, 6, 10, 11], [4, 5, 9, 12, 13], [4, 5, 6, 8, 10, 12, 13, …Run Code Online (Sandbox Code Playgroud)