我可以知道为什么下面的代码没有打印出来[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)
这有效
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)
apply
将采用它的第二个参数(应该是一个元组/列表)并将这个元组的每个元素作为位置参数传递给您apply
作为第一个参数传递给的对象。
这意味着如果x = [1,2,3]
你打电话
apply(lambda x: x * 2, (x))
apply
将使用参数1
、2
和调用 lambda 函数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,))
也许我不明白你的问题,但如果你只需要“乘”列表,那么只需将它相乘:
xx = [1,2,3]
print(xx * 2)