Python 列表映射后的平均值
本篇閱讀的代碼片段來自于30-seconds-of-python。
1、average_by
def average_by(lst, fn=lambda x: x): return sum(map(fn, lst), 0.0) / len(lst) # EXAMPLES average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n']) # 5.0
該函數(shù)用于在列表中求取平均數(shù)。該代碼片段中主要使用了lambda
表達式和map
函數(shù)。該函數(shù)的主要邏輯是使用lambda表達式和map
函數(shù)提取由待計算的數(shù)值組成的迭代器,然后使用sum
函數(shù)計算列表的和,再除以列表長度。
2、lambda表達式
形如lambda parameters: expression
的表達式可以創(chuàng)建一個匿名函數(shù)。在該代碼片段中,lambda
表達式出現(xiàn)在函數(shù)average_by
的參數(shù)定義中,作為一個參數(shù)傳給了fn。因此在average_by
函數(shù)體中fn作為剛剛在參數(shù)中定義的函數(shù)發(fā)揮作用。
函數(shù)average_by
的默認參數(shù)中的lambda
表達式是一個直接返回輸入?yún)?shù)的函數(shù)。在例子中,向average_by
傳入的匿名函數(shù)返回字典中key值為n項的值。
3、map函數(shù)
map函數(shù)是Python
內(nèi)置的一個高階函數(shù),這個函數(shù)很有意思,它的參數(shù)是一個函數(shù)以及一個可迭代對象。它會返回一個迭代器,這個迭代器會將參數(shù)中的函數(shù)應(yīng)用在參數(shù)中可迭代對象上。
4、其他類似函數(shù)
在30-seconds-of-python中還有一些類似的代碼片段。在理解了average_by
函數(shù)之后,這些都很容理解。
4.1 max_by
def max_by(lst, fn): return max(map(fn, lst)) # EXAMPLES max_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 8
4.2 min_by
def min_by(lst, fn): return min(map(fn, lst)) # EXAMPLES min_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 2
4.3 sum_by
def sum_by(lst, fn): return sum(map(fn, lst)) # EXAMPLES sum_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 20
到此這篇關(guān)于Python 列表映射后的平均值的文章就介紹到這了,更多相關(guān)Python 列表映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
僅用50行Python代碼實現(xiàn)一個簡單的代理服務(wù)器
這篇文章主要介紹了僅用50行Python代碼實現(xiàn)一個簡單的代理服務(wù)器,利用最簡單的client->proxy->forward原理在socket模塊下編寫,需要的朋友可以參考下2015-04-04pycharm+django創(chuàng)建一個搜索網(wǎng)頁實例代碼
這篇文章主要介紹了pycharm+django創(chuàng)建一個搜索網(wǎng)頁實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01python?requests.post請求404問題及解決方法
這篇文章主要介紹了python?requests.post請求404問題,這里需要根據(jù)自己實際情況來分析當(dāng)前接口接收數(shù)據(jù)時使用的是什么格式,但目前一般的網(wǎng)站都開始采用application/jsond的數(shù)據(jù)格式,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2022-09-09Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題及解決方法
這篇文章主要介紹了Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08Python?任務(wù)自動化工具nox?的配置與?API詳情
這篇文章主要介紹了Python?任務(wù)自動化工具nox?的配置與?API詳情,Nox?會話是通過被@nox.session裝飾的標(biāo)準?Python?函數(shù)來配置的,具體詳情下文相關(guān)介紹需要的小伙伴可以參考一下2022-07-07