def test():
return sorted([(a,b) for a in xrange(10) for b in xrange(10)],
key=lambda (x,y): x + y)
以上是有效的python代码,但在cython中触发错误。错误消息为Expected ')', found ','
。
这里有什么问题?
Python 2.7,Cython 0.19.2
答案 0 :(得分:4)
Cython不支持nested tuple argument unpacking。
您的lambda
使用嵌套的元组参数:
lambda (x,y): x + y
将其替换为:
lambda x: x[0] + x[1]
甚至只是:
sum
也许在这里混合一些itertools.product()
,如:
from itertools import product
def test():
return sorted(product(xrange(10), repeat=2), key=sum)
但是你最终会得到主要由C例程服务的代码..