Skip to main content
 首页 » 编程设计

python之jython lambda 函数

2025年05月04日20itcoder

请问为什么下面的代码没有打印出[1,2,3,1,2,3]。相反,它抛出异常。你能告诉我如何让它发挥作用吗?

x = [1,2,3] 
print apply(lambda x: x * 2, (x)) 

如果我尝试以下操作,它会起作用:

test1 = lambda x: x * 2 
print test1(x)  

请您参考如下方法:

apply 将采用它的第二个参数(应该是元组/列表)并将此元组的每个元素作为位置参数传递给您传递给 apply 的对象第一个参数。

这意味着如果 x = [1,2,3] 并且您调用

apply(lambda x: x * 2, (x)) 

apply 将使用参数 1、2 和 3 调用 lambda 函数,这将失败,因为 lambda 函数只接受一个参数。


要让它工作,您应该将 x 放入元组或列表中:

print apply(lambda x: x * 2, [x]) 

或

# note the extra ','. (x,) is a tuple; (x) is not. 
# this is probably the source of your confusion. 
print apply(lambda x: x * 2, (x,))