同學們,今天我們開啟python的專題咯!可謂是「人生苦短,我學python」。那麼,在python程式設計中,究竟有哪些很好用的方法呢?我們將逐步帶領大家走進python的程式設計專題系列。
今天想和大家講解的是lambda,作為乙個匿名函式,它在工程上廣泛使用。那究竟如何使用這個「小巧玲瓏」的匿名函式呢?在什麼時候使用呢?那麼現在,就帶領大家走進lambda的世界。
函式內部有條件判斷時
lambda作為乙個匿名函式,當其內部有乙個簡單的條件判斷分支結構,也可以很輕鬆的完成。比如:
lambda與filter、map的結合
filter作為乙個過濾器函式,可以對乙個可迭代物件進行篩選。比如,我要對乙個nums
列表進行篩選。我們來看看下面的幾組做法吧:
由此可見,巧妙的使用lambda是可以達到事半功倍的效果哦。
同樣,map函式可以按照某一規律,把乙個可迭代物件變為另外乙個可迭代物件。如果這個規律用lambda來寫,是不是方便很多呢?現在看看下面的寫法:
lambda與reduce的結合
學會reduce和lambda的結合:
reduce的工作過程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的過程中,首先把 前兩個元素傳給 函式引數,函式加工後,然後把得到的結果和第三個元素作為兩個引數傳給函式引數, 函式加工後得到的結果又和第四個元素作為兩個引數傳給函式引數,依次類推。
如果傳入了 initial 值,那麼整體的結果就要乘以initial值。
from functools import reduce
reduce() 函式在 python 2 是內建函式, 從python 3 開始移到了 functools 模組。
從左到右對乙個序列的項累計地應用有兩個引數的函式,以此合併序列到乙個單一值。
例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 計算的就是((((1+2)+3)+4)+5)。
如果提供了 initial 引數,計算時它將被放在序列的所有項前面,如果序列是空的,它也就是計算的預設結果值了。
比如要計算乙個列表的所有元素的乘積:
排序中的lambda
排序方法的key:主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。(多和lambda結合(lambda是乙個表示式)
比如我們對list1進行排序,可以採用sort方法或者sorted函式。由於list1的元素是元組型別,我們可以自定義方法,是根據元組的哪乙個值排序。這裡reverse=true,表示是降序排列。
64 Python中lambda表示式和匿名函式
目錄 lambda表示式和匿名函式 lambda表示式可以用來宣告匿名函式 lambda函式是一種簡單的,在同一行中定義函式的方法,lambda 函式實際生成了乙個函式物件 lambda表示式只允許包含乙個表示式,不能包含複雜語句,該表示式的計算結果就是函式的返回值 lambda表示式的基本語法如下...
Python函式式程式設計之lambda
python可以使用lambda來建立匿名函式。lambda只是乙個表示式,函式題比def簡單的多。lambda主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。lambda雖然看起來...
018 python函式式程式設計 Lambda表示式
lambda表示式本質上是一種匿名函式,匿名函式也是函式,也函式型別,也可以建立函式物件。定義 lambda 引數列表 lambda體 lambda 是關鍵字宣告,這個乙個lambda表示式,引數列表 與函式的引數列表是一樣的,但不需要小括號括起來,冒號後面的 lambda體 lambda表示式的主...