Cython编译错误 - 生成器表达式的问题?

时间:2014-03-17 15:35:45

标签: python generator cython

我试图对我继承的一些代码进行cython化。它在这里出错:

try:
    maxi=xi+next(i for i,z in enumerate(EW[xi:]) if z>=boundingHeight)
except StopIteration: 
    maxi=len(EW)

然后打印出一个巨大的堆栈跟踪,这对我来说毫无意义。它始于:

Compiler crash in AnalyseExpressionsTransform

这条线本身对我来说有点奇怪 - 我不太明白(看起来像某种生成器表达给我)因此可以高兴地相信它会对Cython造成问题!!

编辑:埋藏在文档中我发现Cython不支持大多数生成器表达式。所以我想这个问题变成了:如何重写表达式以便它不使用生成器?

1 个答案:

答案 0 :(得分:1)

我们显然缺少一些上下文,但我相信等效代码应该是这样的:

for i,z in enumerate(EW[xi:]):
    if z>=boundingHeight:
        breaK
else:
    raise StopIteration
maxi=xi+i