Python中lambda表示式的用法

python学习者0發表於2024-04-28

lambda表示式本身是一個非常基礎的python函式語法,其基本功能跟使用def所定義的python函式是一樣的,只是lambda表示式基本在一行以內就完整的表達了整個函式的運算邏輯。這裡我們簡單展示一些lambda表示式的使用示例,以供參考。

二元求和

首先我們嘗試一個最簡單的二元求和的ipython案例,輸入兩個引數x和y,返回這兩個元素的和:

[dechin@dechin-manjaro 2021-python]$ ipython
Python 3.8.5 (default, Sep  4 2020, 07:30:14) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
 
In [1]: sum2 = lambda x,y: x+y
 
In [2]: sum2(3,5)

Out[2]: 8

結合map函式

在一些函式被頻繁呼叫的場景,比如凸最佳化演算法,或者是python中的map函式實現,這裡以map函式為示例展示一下lambda函式在其中的用法:

In [9]: list(map(lambda x:x**2, range(10)))
#學習中遇到問題沒人解答?小編建立了一個Python學習交流群:153708845
Out[9]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

去掉奇數

在def所定義的python函式中,我們可以執行任意的python格式的程式碼,但是在lambda表示式下,像if這種常見的條件判斷語句的語法要發生一定的變化,可以參考如下示例:

In [19]: list(map(lambda x:x if x-(x>>1)*2==0 else None, range(10)))

Out[19]: [0, None, 2, None, 4, None, 6, None, 8, None]

這個案例演示的是,輸入一個陣列,經過一些運算之後保留偶數,而用None替換所有的奇數。這裡面用到的運算子是>>移位算符,其等價於常用的//符號。但是這非常值得引起重視,因為在有些語言中,移位算符的操作速度要高於四則運算的算符。

總結

本文主要展示了一些lambda表示式的使用示例,透過這些示例,我們可以瞭解到lambda表示式的常用語法以及使用的場景。在一般情況下,其最大的意義還是簡化了python中函式的定義方式,在可讀性上遠不如def所定義的函式。

相關文章