我可以知道为什么下面的代码不打印[1,2,3,1,2,3]
。相反,它会引发异常。你能告诉我如何使它工作。jython lambda函数
x = [1,2,3]
print apply(lambda x: x * 2, (x))
,如果我尝试以下方法,它的工作原理:
test1 = lambda x: x * 2
print test1(x)
我可以知道为什么下面的代码不打印[1,2,3,1,2,3]
。相反,它会引发异常。你能告诉我如何使它工作。jython lambda函数
x = [1,2,3]
print apply(lambda x: x * 2, (x))
,如果我尝试以下方法,它的工作原理:
test1 = lambda x: x * 2
print test1(x)
也许我不明白你的问题,但如果你需要的是为“正片叠底”列表中,然后简单地乘以:
xx = [1,2,3]
print(xx * 2)
我只想看看lambda函数是如何工作的。不管怎么说,还是要谢谢你。 – 2013-02-28 05:15:32
apply
将其第二个参数(其应该是一个元组/列表),并把该元组的每个元素作为位置参数到你传递给apply
作为第一变元的对象吨。
这意味着,如果x = [1,2,3]
和你打电话
apply(lambda x: x * 2, (x))
apply
将调用拉姆达函数的参数1
,2
和3
,这将失败,因为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,))
感谢Dominic。有用。 – 2013-02-28 05:13:31
这工作
x = [1,2,3]
print apply(lambda x: x * 2, [x])
然而,这可能值得注意的是apply
是因为Python 2.3
http://docs.python.org/2/library/functions.html#apply
Deprecated since version 2.3: Use function(*args, **keywords) instead of apply(function, args, keywords). (see Unpacking Argument Lists)
谢谢你让我知道,轩。 – 2013-02-28 05:14:13
请编辑您的帖子曾经弃用,包括完整的代码不工作,如果可能的话,除了你。 – 2013-02-26 12:40:37
'应用((lambda x:x * 2),(x))'做些什么? – User 2013-02-27 11:01:57