技術背景
lambda表達式本身是一個非常基礎的python函數語法,其基本功能跟使用def所定義的python函數是一樣的,只是lambda表達式基本在一行以內就完整的表達了整個函數的運算邏輯。這里我們簡單展示一些lambda表達式的使用示例,以供參考。
二元求和
首先我們嘗試一個最簡單的二元求和的ipython案例,輸入兩個參數x和y,返回這兩個元素的和:
1
2
3
4
5
6
7
8
9
|
[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函數在其中的用法:
1
2
|
In [ 9 ]: list ( map ( lambda x:x * * 2 , range ( 10 ))) Out[ 9 ]: [ 0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 ] |
去掉奇數
在def所定義的python函數中,我們可以執行任意的python格式的代碼,但是在lambda表達式下,像if這種常見的條件判斷語句的語法要發生一定的變化,可以參考如下示例:
1
2
|
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所定義的函數。
以上就是python3 lambda表達式詳解的詳細內容,更多關于python3 lambda表達式的資料請關注服務器之家其它相關文章!
原文鏈接:https://www.cnblogs.com/dechinphy/p/lambda.html