Python lambda與內建函式

2022-09-11 21:57:33 字數 3997 閱讀 1157

對於簡單的函式,也存在一種簡便的表示方式,即:lambda表示式

#普通函式

def func(a):

return a+1

print ('test1_func0:',func(1000))

#lambda表示式

func0 = lambda a:a+1

print ('test2_func0:',func0(1000))

上面這種方法,都實現了將1000+1的結果列印出來的這個功能,但是用下面的lambda存在的意義就是對簡單函式的簡潔表達。

filter(處理邏輯, 可遍歷物件)遍歷序列中的每個元素,判斷每個元素的布林值為true則保留元素.

用法:返回執行結果為true的入參(入參是列表字元元組)

1 li = [11, 22, 33]

2 new_list = filter(lambda arg: arg > 22, li)

3 print (new_list)

輸出:[33]

map函式,我們使用map函式將會對列表中的所有元素進行操作。

map有兩個引數(函式,列表),它會在內部遍歷列表中的每乙個元素,執行傳遞過來的函式引數。在輸出到新列表中。

用法:對列表入參依次執行函式。入參為列表,有多少個列表,就應該有多少個入參。

1 li = [11, 22, 33]

2 new_list = map(lambda a: a + 100, li)

輸出:[111, 122, 133]

reduce(函式, 序列, 預設空引數)處理乙個序列, 然後把寫進行合作操作

reduce函式,對於序列內所有元素進行累計操作

用法:對列表入參依次執行函式。入參為列表,有多少個列表,就應該有多少個入參。

1 lst = [11,22,33]

2 func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)

3 print ('func2:',func2)

輸出:func2: 66

sort是容器的函式,sorted是python的內建函式相同的引數

簡單解釋一下兩函式:

sort(cmp=none, key=none, reverse=false)

sorted(iterable, cmp=none, key=none, reverse=false)

sort是容器的函式,sorted是python的內建函式相同的引數。

cmp:用於比較的函式,比較什麼由key決定,有預設值,迭代集合中的一項。cmp(e1, e2) 是帶兩個引數的比較函式, 返回值:

負數: e1 < e2,

0: e1 == e2,

正數: e1 > e2。

預設為 none, 即用內建的比較函式。

key:用列表元素的某個已命名的屬性或函式(只有乙個引數並且返回乙個用於排序的值)作為關鍵字,有預設值,迭代集合中的一項。

reverse:排序規則,reverse = true 或者 reverse = false,有預設值。

1.對於乙個無序的列表a,呼叫a.sort(),對a進行排序後返回a。

而對於同樣乙個無序的列表a,呼叫sorted(a),對a進行排序後返回乙個新的列表,而對a不產生影響。

>>> a=[1,3,5,2,9,4,7,8,6,0]

>>> a.sort()

>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> a=[1,3,5,2,9,4,7,8,6,0]

>>> sorted(a)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> a [1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

複雜點的

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> list1.sort()

>>> list1

[(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> sorted(list1)

[(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]

>>> list1

[(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

當list由tuple組成時,預設情況下,sort和sorted都會根據tuplp[0]作為排序的key進行排序

1.基於key函式排序:

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> list1.sort(key=lambda employee : employee[2])

>>> list1

[(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> sorted(list1,key=lambda employee : employee[2])

[(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]

>>> list1

[(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

2.基於cmp函式排序:

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> list1.sort(cmp=lambda x,y : cmp(x[1],y[1]))

>>> list1

[(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]

>>> sorted(list1,cmp=lambda x,y : cmp(x[1],y[1]))

[(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]

>>> list1

[(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

3.基於公升序/降序排序:

>>> a=[1,3,5,2,9,4,7,8,6,0]

>>> a.sort(reverse=false)

>>> a

[0, 1, 2, 3, 4, 5,

python lambda表示式與內建函式

目錄super 用於表示簡單的函式 lambda表示式,為了解決簡單函式的情況 def func a1,a2 func lambda a1,a2 a1 a2 函式直接得到返回值,這裡隱藏了return return a1 a2 簡化 三元運算,為了解決簡單的if else的情況,如 if 1 1 a...

python lambda函式 與 函式式程式設計

lambda函式又名匿名函式。顧名思義,匿名函式,那肯定就是沒有函式名稱啦。先看個最簡單的例子 先寫個正常的函式 def f x return x 1很簡單,不解釋。如果寫成lambda函式 g lambda x x 1 print g print g 2 at 0x1007cc668 3由此可見g...

python lambda函式基礎

本文,我們學習python lambda函式。首先,看一下python lambda函式的語法,如下 f lambda parameter1,parameter2,expression lambda語句中,冒號前是引數,可以有0個或多個,用逗號隔開,冒號右邊是返回值。lambda語句構建的其實是乙個...