色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲

常州機(jī)器視覺培訓(xùn)

常州上位機(jī)軟件開發(fā)

常州工業(yè)機(jī)器人編程設(shè)計(jì)培訓(xùn)

常州PLC培訓(xùn)

常州PLC

常州PLC編程培訓(xùn)

常州電工培訓(xùn)

常州和訊plc培訓(xùn)中心歡迎您!
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心 新聞中心
Lambda函數(shù)竟然這么實(shí)用-常州上位機(jī)學(xué)習(xí),常州機(jī)器視覺學(xué)習(xí)
日期:2024-5-31 16:08:41人氣:  標(biāo)簽:常州上位機(jī)學(xué)習(xí) 常州機(jī)器視覺學(xué)習(xí)

Lambda 函數(shù)

Lambda函數(shù)是一種匿名函數(shù),也就是說,它沒有使用def關(guān)鍵字定義的函數(shù)名。Lambda函數(shù)通常用于簡短的、一次性的任務(wù),比如作為參數(shù)傳遞給高階函數(shù)(例如filter()、map()等)。

lambda arguments: expression

這里,arguments是傳遞給lambda函數(shù)的參數(shù)列表,expression是一個(gè)關(guān)于這些參數(shù)的表達(dá)式,它返回的值就是這個(gè)lambda函數(shù)的返回值。

Lambda 函數(shù)可以接受任意數(shù)量的參數(shù),但只能有一個(gè)表達(dá)式。這個(gè)表達(dá)式的計(jì)算結(jié)果就是函數(shù)的返回值。

例如,一個(gè)簡單的lambda函數(shù),它接受一個(gè)參數(shù)并返回它的平方:

square = lambda x: x * x

print(square(5))  # 輸出 25

好,以上我們了解了Lambda函數(shù)的基本使用方法,接下來分享一些操作技巧,供大家學(xué)習(xí)參考。


1、與sorted()結(jié)合使用進(jìn)行自定義排序

students = [{'name': 'John', 'age': 20}, {'name': 'Jane', 'age': 22}]

def sort_key(student):

    return student['age']


sorted_students = sorted(students, key=sort_key)

print(sorted_students)


在這個(gè)例子中,我們定義了一個(gè)名為sort_key的函數(shù),它接受一個(gè)學(xué)生字典作為參數(shù),并返回學(xué)生的年齡。然后我們將這個(gè)函數(shù)傳遞給sorted()函數(shù)的key參數(shù),以便按照年齡對(duì)學(xué)生列表進(jìn)行排序。


像這種簡單的排序,我們可以使用lambda函數(shù):

students = [{'name': 'John', 'age': 20}, {'name': 'Jane', 'age': 22}]

sorted_students = sorted(students, key=lambda x: x['age'])


2、與filter()結(jié)合使用進(jìn)行元素篩選

numbers = range(10)

def is_even(number):

    return number % 2 == 0


even_numbers = list(filter(is_even, numbers))

print(even_numbers)

在這個(gè)例子中,我們定義了一個(gè)名為 is_even 的函數(shù),它接受一個(gè)數(shù)字作為參數(shù),并返回一個(gè)布爾值,指示該數(shù)字是否為偶數(shù)。然后我們將這個(gè)函數(shù)傳遞給 filter() 函數(shù),以便篩選出范圍內(nèi)的所有偶數(shù)。


使用lambda函數(shù):

numbers = range(10)

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

3、在高階函數(shù)中作為參數(shù)傳遞


from functools import reduce

numbers = [1, 2, 3, 4, 5]

sum_of_squares = reduce(lambda x, y: x + y * y, numbers, 0)

考慮到這部分內(nèi)容,可能部分粉絲沒有涉獵過相關(guān)內(nèi)容,所以這里解釋一下:

(1)functools是Python的標(biāo)準(zhǔn)庫中的一個(gè)模塊,它提供了用于高階函數(shù)(即那些作用于或返回其他函數(shù)的函數(shù))的實(shí)用工具。reduce函數(shù)是其中之一。

(2)sum_of_squares = reduce(lambda x, y: x + y * y, numbers, 0):這行代碼使用reduce函數(shù)來計(jì)算列表numbers中每個(gè)元素的平方和。


lambda x, y: x + y * y:它接受兩個(gè)參數(shù)x和y。這個(gè)lambda函數(shù)的目的是將當(dāng)前累積的和x與下一個(gè)元素的平方y(tǒng) * y相加,然后返回新的累積和。

numbers:這是reduce函數(shù)作用的列表。

0:這是reduce函數(shù)的初始值。在第一次調(diào)用lambda函數(shù)時(shí),x將被設(shè)置為此初始值,而y將是列表中的第一個(gè)元素。


(3)reduce函數(shù)的工作方式是遍歷列表numbers中的所有元素,每次迭代都應(yīng)用lambda函數(shù)。在第一次迭代中,x是初始值0,y是列表中的第一個(gè)元素1。lambda函數(shù)計(jì)算0 + 1 * 1,結(jié)果是1。在第二次迭代中,x是上一次迭代的結(jié)果1,y是列表中的第二個(gè)元素2。lambda函數(shù)計(jì)算1 + 2 * 2,結(jié)果是5,依此類推。最終,reduce函數(shù)返回所有元素平方的和。


因此,sum_of_squares將是1^2 + 2^2 + 3^2 + 4^2 + 5^2的結(jié)果,即55。


4、在數(shù)據(jù)處理或機(jī)器學(xué)習(xí)中的應(yīng)用

df['new_column'] = df.apply(lambda row: row['col1'] + row['col2'], axis=1)

這行代碼的作用是在 DataFrame df 中創(chuàng)建一個(gè)新的列 new_column,這個(gè)新列的每個(gè)元素是同一行的 col1 和 col2 列的和。這個(gè)操作是對(duì) DataFrame 中的每一行獨(dú)立進(jìn)行的,因此 new_column 中的每個(gè)值都是對(duì)應(yīng)行的 col1 和 col2 的和。


就我們舉的例子而言,其實(shí)這里完全可以更簡單化:


df['new_column'] = df['col1'] + df['col2']

沒錯(cuò),就這個(gè)例子而言,使用下面的代碼運(yùn)行速度會(huì)更快。

在大多數(shù)情況下,應(yīng)該優(yōu)先使用向量化的操作,因?yàn)樗鼈兏臁V挥挟?dāng)需要執(zhí)行復(fù)雜的操作,且這些操作不能簡單地用向量化的方式完成時(shí),才應(yīng)該考慮使用apply()方法。

盡管lambda函數(shù)在這些高級(jí)用法中很有用,但需要注意的是,對(duì)于復(fù)雜的邏輯,使用普通的函數(shù)定義可能更為清晰和可維護(hù)。Lambda函數(shù)最適合用于簡短且目的明確的代碼片段。

本文網(wǎng)址:
下一篇:沒有資料

相關(guān)信息:
版權(quán)所有 CopyRight 2006-2017 江蘇和訊自動(dòng)化設(shè)備有限公司 常州自動(dòng)化培訓(xùn)中心 電話:0519-85602926 地址:常州市新北區(qū)府琛商務(wù)廣場2號(hào)樓1409室
蘇ICP備14016686號(hào)-2 技術(shù)支持:常州山水網(wǎng)絡(luò)
本站關(guān)鍵詞:常州PLC培訓(xùn) 常州PLC編程培訓(xùn) 常州PLC編程 常州PLC培訓(xùn)班 網(wǎng)站地圖 網(wǎng)站標(biāo)簽
在線與我們?nèi)〉寐?lián)系
色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲