gpt4 book ai didi

python - cython 函数中的 Lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 08:34:36 24 4
gpt4 key购买 nike

我想将 lambda 表达式与 cython 一起使用,但它不适用于 cpdef。错误表示尚不支持,但是cython changeleg表示支持 lambda 表达式。

%%cython
cimport numpy as np
import numpy as np

cdef foo():
a = np.random.randint(1,10,10)
b = sorted(a, key = lambda x: x%np.pi) #Compiles
return(b)

cpdef goo():
a = np.random.randint(1,10,10)
b = sorted(a) #Compiles
return(b)

cpdef hoo():
a = np.random.randint(1,10,10)
b = sorted(a, key = lambda x: x%np.pi) #Compile time error
return(b)
<小时/>
Error compiling Cython file:
------------------------------------------------------------
...
cpdef goo():
a = np.random.randint(1,10,10)
b = sorted(a)
return(b)

cpdef hoo():
^
------------------------------------------------------------

/********/.cache/ipython/cython/_cython_magic_63378538fa4250ed3135e0289d6af7a0.pyx:14:6: closures inside cpdef functions not yet supported

确实不支持 lambda 表达式,还是我遗漏了某些内容?

Python 版本 3.5.5; Cython 版本:0.24

最佳答案

这仅涉及 cpdef 方法内的闭包。如果您没有在 cpdef 函数内定义任何函数(即闭包),那么这将起作用。 Lambda表达式只是一个函数,但是有特定的语法。试试这个。

def sort_key(x):
return x%np.pi

cpdef hoo():
a = np.random.randint(1,10,10)
b = sorted(a, key = sort_key)
return(b)

关于python - cython 函数中的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50042822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com