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
Cython 不支持嵌套元组参数解包。
您的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 例程提供的代码。