欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Lambda函數(shù)怎么在Python中使用-創(chuàng)新互聯(lián)

本篇文章為大家展示了Lambda函數(shù)怎么在Python中使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián) - 成都多線機房,四川服務器租用,成都服務器租用,四川網(wǎng)通托管,綿陽服務器托管,德陽服務器托管,遂寧服務器托管,綿陽服務器托管,四川云主機,成都云主機,西南云主機,成都多線機房,西南服務器托管,四川/成都大帶寬,機柜大帶寬租用·托管,四川老牌IDC服務商

Python 中定義函數(shù)有兩種方法,一種是用常規(guī)方式 def 定義,函數(shù)要指定名字,第二種是用 lambda 定義,不需要指定名字,稱為 Lambda 函數(shù)。

Lambda 函數(shù)又稱匿名函數(shù),匿名函數(shù)就是沒有名字的函數(shù),函數(shù)沒有名字也行?當然可以啦。有些函數(shù)如果只是臨時一用,而且它的業(yè)務邏輯也很簡單時,就沒必要非給它取個名字不可。

好比電影里面的群眾演員,往往他們的戲份很少,最多是襯托主演,跑跑龍?zhí)?,他們需要名字嗎?不需要,因為他們僅僅只是臨時出鏡,下次可能就用不著了,所以犯不著費心思給他們每個人編個號取個名字,畢竟取個優(yōu)雅的名字是很費勁的事情。

先來看個簡單 lambda 函數(shù)

>>> lambda x, y : x+y
<function <lambda> at 0x102bc1c80>

x 和 y 是函數(shù)的兩個參數(shù),冒號后面的表達式是函數(shù)的返回值,你能一眼看出這個函數(shù)就是是在求兩個變量的和,但作為一個函數(shù),沒有名字如何使用呢?這里我們暫且給這個匿名函數(shù)綁定一個名字,這樣使得我們調(diào)用匿名函數(shù)成為可能

>>> add = lambda x, y : x+y
>>> add
<function <lambda> at 0x102bc2140>
>>> add(1,2)
3

它等同于常規(guī)函數(shù)

>>> def add2(x, y):
... return x+y
...
>>> add2
<function add2 at 0x102bc1c80>
>>> add2(1,2)
3

如果定義匿名函數(shù),還要給它綁定一個名字的話,有點畫蛇添足,通常是直接使用 lambda 函數(shù)。那么 lamdba 函數(shù)的正確使用場景在哪呢?

1、函數(shù)式編程

盡管 Python 算不上是一門純函數(shù)式編程語言,但它本身提供了很多函數(shù)式編程的特性,像 map、reduce、filter、sorted 這些函數(shù)都支持函數(shù)作為參數(shù),lambda 函數(shù)就可以應用在函數(shù)式編程中。

請看題:一個整數(shù)列表,要求按照列表中元素的絕對值大小升序排列,你會怎么做?思考一分鐘往下看

>>> list1 = [3,5,-4,-1,0,-2,-6]
>>> sorted(list1, key=lambda x: abs(x))
[0, -1, -2, 3, -4, 5, -6]

排序函數(shù) sorted 支持接收一個函數(shù)作為參數(shù),該參數(shù)作為 sorted 的排序依據(jù),這里按照列表元素的絕對值進行排序,當然,我也可以用普通函數(shù)來實現(xiàn):

>>> def foo(x):
... return abs(x)
...
>>> sorted(list1, key=foo)
[0, -1, -2, 3, -4, 5, -6]

只不過是這種方式代碼看起來不夠 Pythonic 而已。

2、閉包

閉包本身是一個晦澀難懂的概念,它可以專門單獨用一篇文章來介紹,不過在這里我們可以簡單粗暴地理解為閉包就是一個定義在函數(shù)內(nèi)部的函數(shù),閉包使得變量即使脫離了該函數(shù)的作用域范圍也依然能被訪問到。

來看一個用 lambda 函數(shù)作為閉包的例子。

>>> def my_add(n):
... return lambda x:x+n
...
>>> add_3 = my_add(3)
>>> add_3(7)
10

這里的 lambda 函數(shù)就是一個閉包,在全局作用域范圍中,add_3(7) 可以正常執(zhí)行且返回值為10,之所以返回10是因為在 my_add 局部作用域中,變量 n 的值在閉包的作用使得它在全局作用域也可以被訪問到。

換成常規(guī)函數(shù)也可以實現(xiàn)閉包,只不過是這種方式稍顯啰嗦。

>>> def my_add(n):
... def wrapper(x):
... return x+n
... return wrapper
...
>>> add_5 = my_add(5)
>>> add_5(2)
7

那么是不是任何情況 lambda 函數(shù)都要比常規(guī)函數(shù)更清晰明了呢?看這個例子:

f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))]

這是一個返回某個集合的所有子集的 lambda 函數(shù),你看明白了嗎?我是很難一眼看出來

zen of python 中有這樣一句話是 Explicit is better than implicit(明了勝于晦澀)。記住,如果用 lambda 函數(shù)不能使你的代碼變得更清晰時,這時你就要考慮使用常規(guī)的方式來定義函數(shù)。

上述內(nèi)容就是Lambda函數(shù)怎么在Python中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:Lambda函數(shù)怎么在Python中使用-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://aaarwkj.com/article12/geegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務器、企業(yè)網(wǎng)站制作商城網(wǎng)站、面包屑導航、App設(shè)計、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設(shè)
av一区二区日韩电影| 玩弄丰满熟妇留守妇女| 日韩欧美中文字幕一区二区| 精品人妻中文字幕一区有码| 亚洲一区二区三区熟女少妇| 国产亚洲精品国产福利久久| 欧美国产日韩二区一区在线| 韩国av毛片在线播放| 国产女人和拘做受视频| 中文一级伦理一区二区| 亚洲综合色视频在线播放| 亚洲一区二区精品自拍| 午夜免费福利视频一区| 在线欧美亚洲观看天堂| 精品人妻一区二区三区蜜桃电 | 亚洲国产视频不卡一区| 午夜在线精品福利视频| 国产麻豆三级在线观看| 懂色一区二区三区精品视频| 免费无遮挡午夜视频网站| 日本激情诱惑免费在线播放| 四虎精品在线免费视频| 日韩不卡免费一区二区三区视频| 麻豆视频91免费观看| 亚洲精品老司机福利在线| 亚洲成人高清av在线| 中国成熟女人毛茸茸视频| 亚洲免费观看视频一区二区三区| 亚洲熟妇丰满多毛的大昊| 黄色大片黄色大片黄色大片| 午夜欧美日韩精品久久久| 日韩av亚洲一区二区三区 | 亚洲日本韩国美女二区| 国产精品高清呻吟久久久| 亚洲精品熟女国产国产老熟女| 男女做爰高清无遮挡免费| 国产日韩手机在线不卡视频| 观看亚洲一区二区三区大片| 中文岳妇荡欲丰满肥熟| 午夜麻豆影网在线观看| 自拍偷拍欧美日韩第一页|