Python lambda引數傳遞用法

2021-09-26 00:26:22 字數 1965 閱讀 6218

之前提到過在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語句構建的其實是乙個...