之前提到過在list的sort方法中有個key引數,需要用到lambda表示式,所以在這裡對lambda表示式進行一些介紹,如果有函式式語言程式設計經驗這個就很好理解了。
lambda表示式是乙個匿名函式,其實lambda我們可以認為就是個很簡單的函式,連個函式名都沒有。在可以不使用lambda的時候我不建議使用。
它的句法(形式):
lambda arguments : expression
以下是乙個簡單的例子,我們可以認為建立了乙個名為fun的函式,它有乙個引數a,它返回a+10的結果。這是最簡單也是最無用的例子,但方便我們理解。
# 15
fun =
lambda a : a +
10print
(fun(5)
)
當然它同樣支援多引數:
# 3
fun =
lambda a, b : a + b
print
(fun(1,
2))
它真正的用途是在另乙個函式中作為引數傳遞:
自帶函式的用法:filter, map, reduce
fitre :根據條件篩選元素
map :所有元素進行相同操作
reduce :所有元素依次進行操作
import functools
#初始化乙個0到9的列表
list_test =
list
(range(10
))#篩選對3取餘等於0的數,結果[0, 3, 6, 9]
a =filter
(lambda x: x %3==
0, list_test)
#所有元素加10結果[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
b =map
(lambda x: x +
10, list_test)
#求和結果45
c = functools.
reduce
(lambda x, y: x + y, list_test)
print
(list
(a))
print
(list
(b))
print
(c)
注意:
在python3中,filter和map方法不能在直接返回列表,它返回的是filter object和map object,需要用list()方法轉換。
而reduce方法則直接從內建函式中刪除,需要引用functools。
對於多條件排序的例子:
# 先根據第二個元素排序再根據第乙個元素排序
# 返回結果[[4, 1], [1, 2], [2, 2], [3, 2], [1, 3], [3, 4]]
list_test =[[
2,2]
,[3,
4],[
4,1]
,[1,
3],[
1,2]
,[3,
2]]list_test.sort(key =
lambda x :
(x[1
],x[0]
))
ps:如果這部分比較難以理解我們可以更換為以下方式進行多條件排序:def
second_first
(ele)
:return
(elem[1]
,elem[0]
)list_test =[[
2,2]
,[3,
4],[
4,1]
,[1,
3],[
1,2]
,[3,
2]]list_test.sort(key=second_first)
結果相同。 jsp 引數傳呀傳
我覺得學jsp,第一要學會如何頁面跳轉,第二要學會如何在頁面之間傳遞引數,這兩樣搞定了,問題就不大了 傳遞引數當然也要分2種情況 1.伺服器端跳轉 forward 2.客戶端跳轉 response.sendredirect 在伺服器端跳轉,如果使用標籤 page name value 傳遞引數 js...
java引數傳值 傳引用
1 結論 2 傳值和傳引用區別 例項1 傳值 void method1 7 void method2 13 voidchange1 stringbuffer sb 17 voidchange2 stringbuffer sb 呼叫method1 螢幕列印結果為 helloworld 呼叫method...
python lambda函式基礎
本文,我們學習python lambda函式。首先,看一下python lambda函式的語法,如下 f lambda parameter1,parameter2,expression lambda語句中,冒號前是引數,可以有0個或多個,用逗號隔開,冒號右邊是返回值。lambda語句構建的其實是乙個...