cao死我好湿好紧好爽动态视屏|精选久久久久久久久久|中文无码精品一区二区三区四季|AAA国语精品刺激对白视频|

當前位置:首頁 > APP資源 > 正文內(nèi)容

apphtml5橫向列表(html列表橫向排列)

APP資源2個月前 (10-31)256

今天我們來學習 Python 中的 lambda 函數(shù),并探討使用它的優(yōu)點和局限性

Let's do it!

什么是 Python 中的 Lambda 函數(shù)

lambda 函數(shù)是一個匿名函數(shù)(即,沒有名稱定義),它可以接受任意數(shù)量的參數(shù),但與普通函數(shù)不同,它只計算并返回一個表達式

Python 中的 lambda 函數(shù)使用以下語法表達:

lambda 參數(shù):表達式

lambda 函數(shù)包括三個元素:

關(guān)鍵字 lambda:與普通函數(shù)中 def 類似

參數(shù):支持傳遞位置和關(guān)鍵字參數(shù),與普通函數(shù)一樣

正文:處理定參數(shù)的表達式

關(guān)鍵字 lambda:與普通函數(shù)中 def 類似

參數(shù):支持傳遞位置和關(guān)鍵字參數(shù),與普通函數(shù)一樣

正文:處理定參數(shù)的表達式

需要注意的是,普通函數(shù)不同,這里不需要用括號將 lambda 函數(shù)的參數(shù)括起來,如果 lambda 函數(shù)有兩個或更多參數(shù),我們用逗號列出它們

我們使用 lambda 函數(shù)只計算一個短表達式(理想情況下,單行)并且只計算一次,這意味著我們以后不會再復用這個函數(shù)。通常來說我們會將 lambda 函數(shù)作為參數(shù)傳遞給高階函數(shù)(接受其他函數(shù)作為參數(shù)的函數(shù)),例如 Python 內(nèi)置函數(shù),如 filter、map 或 reduce等

Python 中的 Lambda 函數(shù)如何工作

讓我們看一個簡單的 lambda 函數(shù)示例:

lambdax: x + 1

Output:

function __main__.lambda(x)

上面的 lambda 函數(shù)接受一個參數(shù),將其遞增 1,然后返回結(jié)果

它是以下帶有 def 和 return 關(guān)鍵字的普通函數(shù)的更簡單版本:

defincrement_by_one(x):

展開全文

returnx + 1

到目前我們的 lambda 函數(shù) lambda x: x + 1 只創(chuàng)建一個函數(shù)對象,不返回任何內(nèi)容,這是因為我們沒有為其參數(shù) x 提供任何值(參數(shù))。讓我們先分配一個變量,將它傳遞給 lambda 函數(shù),看看這次我們得到了什么:

a = 2

print( lambdax: a + 1)

Output:

function lambda at 0x00000250CB0A5820

我們的 lambda 函數(shù)沒有像我們預期的那樣返回 3,而是返回了函數(shù)對象本身及其內(nèi)存位置,可以看出這不是調(diào)用 lambda 函數(shù)的正確方法。要將參數(shù)傳遞給 lambda 函數(shù),執(zhí)行它并返回結(jié)果,我們應該使用以下語法:

( lambdax: x + 1)( 2)

Output:

3

雖然我們的 lambda 函數(shù)的參數(shù)沒有用括號括起來,但當我們調(diào)用它時,我們會在 lambda 函數(shù)的整個構(gòu)造以及我們傳遞給它的參數(shù)周圍添加括號

上面代碼中要注意的另一件事是,使用 lambda 函數(shù),我們可以在創(chuàng)建函數(shù)后立即執(zhí)行該函數(shù)并接收結(jié)果。這就是所謂的立即調(diào)用函數(shù)執(zhí)行(或 IIFE)

我們可以創(chuàng)建一個帶有多個參數(shù)的 lambda 函數(shù),在這種情況下,我們用逗號分隔函數(shù)定義中的參數(shù)。當我們執(zhí)行這樣一個 lambda 函數(shù)時,我們以相同的順序列出相應的參數(shù),并用逗號分隔它們:

( lambdax, y, z: x + y + z)( 3, 8, 1)

Output:

12

也可以使用 lambda 函數(shù)來執(zhí)行條件操作。下面是一個簡單 if-else 函數(shù)的 lambda 模擬:

print(( lambdax: x if(x 10) else10)( 5))

print(( lambdax: x if(x 10) else10)( 12))

Output:

10

12

如果存在多個條件(if-elif-...-else),我們必須嵌套它們:

( lambdax: x * 10ifx 10else(x * 5ifx 5elsex))( 11)

Output:

110

但是上面的寫法,又令代碼變得難以閱讀

在這種情況下,具有 if-elif-...-else 條件集的普通函數(shù)將是比 lambda 函數(shù)更好的選擇。實際上,我們可以通過以下方式編寫上面示例中的 lambda 函數(shù):

defcheck_conditions(x):

ifx 10:

returnx * 10

apphtml5橫向列表(html列表橫向排列)

elifx 5:

returnx * 5

else:

returnx

check_conditions( 11)

Output:

110

盡管上面的函數(shù)比相應的 lambda 函數(shù)增加了更多行,但它更容易閱讀

我們可以將 lambda 函數(shù)分配給一個變量,然后將該變量作為普通函數(shù)調(diào)用:

increment = lambdax: x + 1

increment( 2)

Output:

3

但是根據(jù) Python 代碼的 PEP 8 樣式規(guī)則,這是一種不好的做法

賦值語句的使用消除了 lambda 表達式相對于顯式 def 語句所能提供的唯一好處(即,它可以嵌入到更大的表達式中)

賦值語句的使用消除了 lambda 表達式相對于顯式 def 語句所能提供的唯一好處(即,它可以嵌入到更大的表達式中)

因此如果我們確實需要存儲一個函數(shù)以供進一步使用,我們最好定義一個等效的普通函數(shù),而不是將 lambda 函數(shù)分配給變量

Lambda 函數(shù)在 Python 中的應用帶有 filter 函數(shù)的 Lambda

Python 中的 filter 函數(shù)需要兩個參數(shù):

定義過濾條件的函數(shù)

函數(shù)在其上運行的可迭代對象

定義過濾條件的函數(shù)

函數(shù)在其上運行的可迭代對象

運行該函數(shù),我們得到一個過濾器對象:

lst = [ 33, 3, 22, 2, 11, 1]

filter( lambdax: x 10, lst)

Output:

filter at 0x250cb090520

為了從過濾器對象中獲取一個新的迭代器,并且原始迭代器中的所有項都滿足預定義的條件,我們需要將過濾器對象傳遞給 Python 標準庫的相應函數(shù):list、tuple、set 、frozenset 或 sorted(返回排序列表)

讓我們過濾一個數(shù)字列表,只選擇大于 10 的數(shù)字并返回一個按升序排序的列表:

lst = [ 33, 3, 22, 2, 11, 1]

sorted(filter( lambdax: x 10, lst))

Output:

[11, 22, 33]

我們不必創(chuàng)建與原始對象相同類型的新可迭代對象,此外我們可以將此操作的結(jié)果存儲在一個變量中:

lst = [ 33, 3, 22, 2, 11, 1]

tpl = tuple(filter( lambdax: x 10, lst))

tpl

Output:

(33, 22, 11)

帶有 map 函數(shù)的 Lambda

我們使用 Python 中的 map 函數(shù)對可迭代的每個項目執(zhí)行特定操作。它的語法與 filter 相同:一個要執(zhí)行的函數(shù)和一個該函數(shù)適用的可迭代對象。

map 函數(shù)返回一個 map 對象,我們可以通過將該對象傳遞給相應的 Python 函數(shù)來從中獲取一個新的迭代:list、tuple、set、frozenset 或 sorted

與 filter 函數(shù)一樣,我們可以從 map 對象中提取與原始類型不同類型的可迭代對象,并將其分配給變量。

下面是使用 map 函數(shù)將列表中的每個項目乘以 10 并將映射值作為分配給變量 tpl 的元組輸出的示例:

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

print(map( lambdax: x * 10, lst))

tpl = tuple(map( lambdax: x * 10, lst))

tpl

Output:

map object at 0x00000250CB0D5F40

(10, 20, 30, 40, 50)

map 和 filter 函數(shù)之間的一個重要區(qū)別是第一個函數(shù)總是返回與原始函數(shù)相同長度的迭代。因此由于 pandas Series 對象也是可迭代的,我們可以在 DataFrame 列上應用 map 函數(shù)來創(chuàng)建一個新列:

importpandas aspd

df = pd.DataFrame({ 'col1': [ 1, 2, 3, 4, 5], 'col2': [ 0, 0, 0, 0, 0]})

print(df)

df[ 'col3'] = df[ 'col1'].map( lambdax: x * 10)

df

Output:

col1 col2

0 1 0

1 2 0

2 3 0

3 4 0

4 5 0

col1 col2 col3

0 1 0 10

1 2 0 20

2 3 0 30

3 4 0 40

4 5 0 50

當然要在上述情況下獲得相同的結(jié)果,也可以使用 apply 函數(shù):

df[ 'col3'] = df[ 'col1'].apply( lambdax: x * 10)

df

Output:

col1 col2 col3

0 1 0 10

1 2 0 20

2 3 0 30

3 4 0 40

4 5 0 50

我們還可以根據(jù)某些條件為另一列創(chuàng)建一個新的 DataFrame 列,對于下面的代碼,我們可以互換使用 map 或 apply 函數(shù):

df[ 'col4'] = df[ 'col3'].map( lambdax: 30ifx 30elsex)

df

Output:

col1 col2 col3 col4

0 1 0 10 30

1 2 0 20 30

2 3 0 30 30

3 4 0 40 40

4 5 0 50 50

帶有 reduce 函數(shù)的 Lambda

reduce 函數(shù)與 functools Python 模塊相關(guān),它的工作方式如下:

對可迭代對象的前兩項進行操作并保存結(jié)果

對保存的結(jié)果和可迭代的下一項進行操作

以這種方式在值對上進行,直到所有項目使用可迭代的

對可迭代對象的前兩項進行操作并保存結(jié)果

對保存的結(jié)果和可迭代的下一項進行操作

以這種方式在值對上進行,直到所有項目使用可迭代的

該函數(shù)與前兩個函數(shù)具有相同的兩個參數(shù):一個函數(shù)和一個可迭代對象。但是與前面的函數(shù)不同的是,這個函數(shù)不需要傳遞給任何其他函數(shù),直接返回結(jié)果標量值:

fromfunctools importreduce

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

reduce( lambdax, y: x + y, lst)

Output:

15

上面的代碼展示了我們使用 reduce 函數(shù)計算列表總和時的作用

需要注意的是,reduce 函數(shù)總是需要一個帶有兩個參數(shù)的 lambda 函數(shù),而且我們必須首先從 functools Python 模塊中導入它

Python 中 Lambda 函數(shù)的優(yōu)缺點優(yōu)點

它是評估單個表達式的理想選擇,應該只評估一次

它可以在定義后立即調(diào)用

與相應的普通語法相比,它的語法更緊湊

它可以作為參數(shù)傳遞給高階函數(shù),例如 filter、map 和 reduce

它是評估單個表達式的理想選擇,應該只評估一次

它可以在定義后立即調(diào)用

與相應的普通語法相比,它的語法更緊湊

它可以作為參數(shù)傳遞給高階函數(shù),例如 filter、map 和 reduce

它不能執(zhí)行多個表達式

它很容易變得麻煩,可讀性差,例如當它包括一個 if-elif-...-else 循環(huán)

它不能包含任何變量賦值(例如,lambda x: x=0 將拋出一個語法錯誤)

我們不能為 lambda 函數(shù)提供文檔字符串

它不能執(zhí)行多個表達式

它很容易變得麻煩,可讀性差,例如當它包括一個 if-elif-...-else 循環(huán)

它不能包含任何變量賦值(例如,lambda x: x=0 將拋出一個語法錯誤)

我們不能為 lambda 函數(shù)提供文檔字符串

總而言之,我們已經(jīng)詳細討論了在 Python 中定義和使用 lambda 函數(shù)的許多方面:

lambda 函數(shù)與普通 Python 函數(shù)有何不同

Python 中 lambda 函數(shù)的語法和剖析

何時使用 lambda 函數(shù)

lambda 函數(shù)的工作原理

如何調(diào)用 lambda 函數(shù)

調(diào)用函數(shù)執(zhí)行(IIFE)的定義

如何使用 lambda 函數(shù)執(zhí)行條件操作,如何嵌套多個條件,以及為什么我們應該避免它

為什么我們應該避免將 lambda 函數(shù)分配給變量

如何將 lambda 函數(shù)與 filter 函數(shù)一起使用

如何將 lambda 函數(shù)與 map 函數(shù)一起使用

我們?nèi)绾卧?pandas DataFrame 中使用

帶有傳遞給它的 lambda 函數(shù)的 map 函數(shù) - 以及在這種情況下使用的替代功能

如何將 lambda 函數(shù)與 reduce 函數(shù)一起使用

在普通 Python 上使用 lambda 函數(shù)的優(yōu)缺點

lambda 函數(shù)與普通 Python 函數(shù)有何不同

Python 中 lambda 函數(shù)的語法和剖析

何時使用 lambda 函數(shù)

lambda 函數(shù)的工作原理

如何調(diào)用 lambda 函數(shù)

調(diào)用函數(shù)執(zhí)行(IIFE)的定義

如何使用 lambda 函數(shù)執(zhí)行條件操作,如何嵌套多個條件,以及為什么我們應該避免它

為什么我們應該避免將 lambda 函數(shù)分配給變量

如何將 lambda 函數(shù)與 filter 函數(shù)一起使用

如何將 lambda 函數(shù)與 map 函數(shù)一起使用

我們?nèi)绾卧?pandas DataFrame 中使用

帶有傳遞給它的 lambda 函數(shù)的 map 函數(shù) - 以及在這種情況下使用的替代功能

如何將 lambda 函數(shù)與 reduce 函數(shù)一起使用

在普通 Python 上使用 lambda 函數(shù)的優(yōu)缺點

希望今天的討論可以使 Python 中看似令人生畏的 lambda 函數(shù)概念更清晰、更易于應用,更希望小伙伴們能夠喜歡,喜歡就點個 贊吧!

入門: 最全的零基礎學Python的問題 | 零基礎學了8個月的Python |實戰(zhàn)項目 | 學Python就是這條捷徑

干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 | 用Python做個海量小姐姐素描圖 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影

趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!

AI:會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影

小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水?。?| 一鍵把html網(wǎng)頁保存為pdf! |再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐! |

年度爆款文案

1). 臥槽!Pdf轉(zhuǎn)Word用Python輕松搞定 !

2).學Python真香!我用100行代碼做了個網(wǎng)站,幫人PS旅行圖片,賺個雞腿吃

3).首播過億,火爆全網(wǎng),我分析了《乘風破浪的姐姐》,發(fā)現(xiàn)了這些秘密

4). 80行代碼!用Python做一個哆來A夢分身

5).你必須掌握的20個python代碼,短小精悍,用處無窮

6). 30個Python奇淫技巧集

7). 我總結(jié)的80頁《菜鳥學Python精選干貨.pdf》,都是干貨

8). 再見Python!我要學Go了!2500字深度分析 !

9).發(fā)現(xiàn)一個舔狗福利!這個Python爬蟲神器太爽了,自動下載妹子圖片

掃描二維碼推送至手機訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://m.smallwaterjetsystem.com/post/123180.html

“apphtml5橫向列表(html列表橫向排列)” 的相關(guān)文章

武漢app定制開發(fā)公司(武漢app定制開發(fā)公司怎么樣)

武漢app定制開發(fā)公司(武漢app定制開發(fā)公司怎么樣)

1華盛恒輝科技有限公司 上榜理由華盛恒輝是一家專注于高端軟件定制開發(fā)服務和高端建設的服務機構(gòu),致力于為企業(yè)提供全面系統(tǒng)的開發(fā)制作方案在開發(fā)建設到運營推廣領(lǐng)域擁有豐富經(jīng)驗,在教育,醫(yī)療,APP,管理,商城,人工。 三整體評估選擇開發(fā)公司,一定要進行整體評估,一是評估自身,二是評估對方四跟進速度好的AP...

網(wǎng)站類app(網(wǎng)站類型有哪些)

網(wǎng)站類app(網(wǎng)站類型有哪些)

1、2旅游app排行榜前十名3旅游的app有哪些4旅游攻略app排行榜前十名口碑最好的旅游軟件有哪些?口碑好的旅游軟件去哪兒攜程旅行窮游驢媽媽旅游螞蜂窩自由行一去哪兒去哪兒APP是國內(nèi)較大的一家旅游出行APP,上面有旅游。 2、2AppmakriOS,WindowsPhone,AndroidAppM...

做企業(yè)規(guī)劃的app(做企業(yè)規(guī)劃的步驟有哪些)

做企業(yè)規(guī)劃的app(做企業(yè)規(guī)劃的步驟有哪些)

十大室內(nèi)設計培訓機構(gòu)排行榜 現(xiàn)在室內(nèi)設計的門檻越來越低,越來越考驗設計師的能力,想要讓自己的技術(shù)精益求精,想在預計的時間內(nèi)學到真本領(lǐng),則選擇去正規(guī)學校進行專業(yè)的學習。因為專業(yè)的室內(nèi)培訓學校可以給學員進行更加正規(guī)的培訓,比如杭州清風室內(nèi)設計培訓學院,專攻室內(nèi)設計一門專業(yè),老師都是股份責任制,培訓班進行...

快手app成人短視頻(快手app成人短視頻怎么下載)

快手app成人短視頻(快手app成人短視頻怎么下載)

1、首先,打開快手應用,然后點擊右下角的“我的”按鈕在個人主頁上方會出現(xiàn)一個“青少年模式”的選項,點擊進入在青少年模式頁面上,你需要進行實名認證以證明你已經(jīng)滿足使用成年版的條件完成實名認證后,你可以點擊頁面上的。 2、快手成年版可以通過以下步驟打開1 打開快手App首先,在手機上找到并打開已經(jīng)安裝好...

app應用開發(fā)哪里做得好(各種app開發(fā)的是學什么專業(yè)的)

app應用開發(fā)哪里做得好(各種app開發(fā)的是學什么專業(yè)的)

北京華盛恒輝科技有限公司東軟集團海輝軟件等都不錯北京華盛恒輝科技有限公司hivekion是一家專注IT產(chǎn)品研發(fā)與服務的企業(yè),是全球領(lǐng)先的IT解決方案提供商東軟以軟件技術(shù)為核心,通過軟件與服務的結(jié)合,軟件與制造的。 其實市場上做APP的也有好多公司,但是每一個公司他主營都不一樣,因為每個公司技術(shù)的專業(yè)...

包含UI設計師app項目經(jīng)歷怎么寫的詞條

包含UI設計師app項目經(jīng)歷怎么寫的詞條

在設計階段踐行精益UX設計 一個現(xiàn)代的設計師應該是具備戰(zhàn)略眼光的設計師你的目標不能局限于悶頭制作漂亮的界面,你應該讓你的設計與團隊合作結(jié)合到一起,切合項目需求洞悉用戶深層次的需求,并且能快速地隨之反饋到設計上;就職時間 XX年6月到XX年1月 就職部門 設計部 公司性質(zhì) 民營私營企業(yè)非上市公司 就職...