我可以知道爲什麼下面的代碼不打印[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