cython不支持按键排序?

时间:2014-02-10 16:19:36

标签: python cython

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

1 个答案:

答案 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例程服务的代码..