我用Python编写了以下代码:
class DisjointSet:
def __init__(self, n):
self.parent = list(range(n))
self.rank = [0 for x in range(n)]
def find(self, v):
if v != self.parent[v]:
self.parent[v] = self.find(self.parent[v])
return self.parent[v]
其余的代码在“代码复杂度”方面是相似的,不包括在这里。在
<>我想把上面的代码翻译成Cython代码(我知道一点点C++,我设法把我的代码翻译成C++,但是我想试试Cython,看看它和C++和Python相比如何)。我有这样的东西:在分离集.pyx公司名称:
^{pr2}$在设置.py公司名称:
^{3}$我在WindowsPowerShell中运行python setup.py build_ext --inplace
来编译代码。但是,当我导入代码并在Python中尝试时,它有时会给出错误(process不返回0),有时在我调用find方法时会给出RecursionError。那么正确的翻译方法是什么呢?我已经阅读了官方文档,但是对于cdef
,cpdef
之类的东西我还是不太确定。在
编辑:我已经添加了for循环来解决这个问题,但是我应该如何改进cython代码?当我查看生成的html文件时,仍然有许多黄色的突出显示(python交互)。具体来说,我想问一下我应该如何使用^ {CD2}},^ {< CD3}}使类方法(^ {< CD6> })更像C++代码。在
C++ +{}运算符{{CD2>}{a1},越界访问给出了一个随机值,这导致后续向量访问中的段错误,您将注意到非零退出代码。
相反,使用^{cd3>},which has bounds checking,cyton将^{cd4>}异常转换为^{cd5>}:
相关问题 更多 >
编程相关推荐