我該如何在python中定義一個常量lambda函數?python中的常量lambda函數
我就需要評估這樣的表達式
lam (array[1,2,3,4,5])
現在我用
lam = lambda t: 1 + t*0
它的工作原理,但它是太浪費?
我該如何在python中定義一個常量lambda函數?python中的常量lambda函數
我就需要評估這樣的表達式
lam (array[1,2,3,4,5])
現在我用
lam = lambda t: 1 + t*0
它的工作原理,但它是太浪費?
,如果你只是想有一個返回同樣的事情功能,無論它被稱爲什麼參數,這是一個行!你沒有任何義務使用你的任何論點。
在蟒蛇,lambda
是沒有名字
如果你打算採取lambda表達式,並立即返回值賦值給一個變量,你給一個函數的函數(和其他一些無關的限制)一個名字。不要這樣做,只需定義一個常規功能即可。當需要將函數傳遞給另一個函數時,您應該使用lambda表達式,並且您要使用的函數很少,甚至不需要名稱(例如總是返回1
)。 Python有一些這樣的「高階函數」(以其他函數作爲參數的函數),map
,filter
和reduce
位於內置命名空間中。
#never!
always_return_one = lambda ignored_argument: 1
#OK: functions with names are def'ed not lambda'd
def always_return_one(ignored_argument):
return 1
#Also OK: pass the lambda to another function as soon as you spell it.
modified_list = some_highorder_function(lambda ignored: 1, [1, 2, 3, 4, 5])
python中最常用的高階函數有一些特殊的語法。在上述情況下,如果函數map
,你可以用一個列表理解像這樣:
modified_list = [1 for ignored in [1, 2, 3, 4, 5]]
其內容更容易一些,是一貫更快!
如果你想在lambda函數忽略其參數,並始終返回1
,根本就沒有使用參數:
lam = lambda t: 1
如何只:
[1] * len(array)
這是傳統的使用_未使用參數
lam = lambda _: 1
你想要的 「常數lambda函數」 是什麼呢?目標是返回一個所有元素都設置爲相同值的數組嗎?問題中的代碼對我無效。 – 2011-12-15 22:36:40
這裏混亂的根源:你的`lam()`因爲你似乎認爲的原因不是「工作」的。整個數組是通過`t`而不是單個元素傳遞的,並且由於標量和數組之間的操作符'+'重載,所以您得到的是1的數組,與常量lamda函數無關。 – wim 2011-12-15 23:47:12