日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python小课堂28_python小课堂28

發(fā)布時(shí)間:2024/3/13 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python小课堂28_python小课堂28 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

嗨!大家好哇,一星期沒見了,后臺(tái)收到朋友的留言以為我停更了....哇哈哈哈時(shí)間永遠(yuǎn)留不住,在春節(jié)期間,擁有這么多空閑時(shí)間的你,有木有好好充電呢?讓我們繼續(xù)回歸python小課堂之路,本章為進(jìn)階篇,介紹的是匿名函數(shù)與高階函數(shù)。

匿名函數(shù)之 lambda 表達(dá)式

見名知意,所謂的匿名函數(shù)就是沒有名字的函數(shù)。我們平時(shí)所寫的函數(shù)都是帶有名字和參數(shù)的,并且有返回值,而匿名函數(shù)的寫法卻非常簡潔,對于初學(xué)者而言,代碼的閱讀性可能會(huì)較差一些,但是多加實(shí)踐,看習(xí)慣了之后就能明白所謂的lambda表達(dá)式是什么意思了!接下來還是用示例說話,場景是這樣的:有個(gè)函數(shù),傳入兩個(gè)參數(shù)a和b,在函數(shù)內(nèi)部將他們做差,并將結(jié)果返回。

示例1 - 普通函數(shù):

示例2 - 匿名函數(shù):

解釋一下上面的案例,使用 python 中的 lambda 關(guān)鍵詞來定義匿名函數(shù),參數(shù)在冒號(hào)前面,表達(dá)式在冒號(hào)后面,將整個(gè) lambda 表達(dá)式賦予一個(gè)變量sub,通過調(diào)用sub傳入?yún)?shù)得到結(jié)果result,與普通函數(shù)得到一致的結(jié)果。

匿名函數(shù)的寫法,通過關(guān)鍵詞 lambda 來表示匿名,基于數(shù)學(xué)中的λ演算得名。lambda表達(dá)式完整的寫法公式如下:

什么意思呢?通過 lambda 后面跟上傳入的參數(shù),加上冒號(hào),以及冒號(hào)后面的表達(dá)式組成了匿名函數(shù),注意:冒號(hào)后面一定要是表達(dá)式!

表達(dá)式意味著,如果我們寫成賦值語句或者for循環(huán)語句等非表達(dá)式語句,那么 lambda 表達(dá)式則會(huì)報(bào)錯(cuò)!如下:

所以由此引出了匿名函數(shù) lambda 中常用的三元表達(dá)式。

示例3 - Python的三元表達(dá)式:

假設(shè)現(xiàn)在有兩個(gè)變量,a = 1,b = 2,請使用一行代碼來判斷 a 小于 b ,若 a 小于 b 為真,則將 a 的值返回。

result 這一行就是所謂的 Python 中的三元表達(dá)式,用中文描述一下就是:

高階函數(shù)

高階函數(shù),Python中自帶了一些高階特性的函數(shù),在某些特定場景下非常實(shí)用,這里舉幾個(gè)常用的,當(dāng)然也會(huì)結(jié)合具體場景去說,畢竟要結(jié)合使用不能濫用!

1. map 函數(shù)

map 函數(shù),map中文意思是地圖的意思,但是在程序中代表映射的意思。高中學(xué)過的映射,不知大家是否還記得!跟那個(gè)意思差不多。。。

場景如下:現(xiàn)在有一個(gè) list_a ,它其中的包含著 1~6 的數(shù)字,請將此集合中的數(shù)字都乘以 2 ,最終得到的結(jié)果組成一個(gè)新的 list_b。

不使用 map ,你會(huì)怎么做呢?思考一下,然后再看下面的答案:

通過 for 循環(huán)取出 list 每個(gè)值,在對其調(diào)用乘2的函數(shù),最后將結(jié)果進(jìn)行拼接,得到 list_b 。

使用 map 函數(shù)之前,先了解下 map 函數(shù)語法:

map(function, iterable, ...)

map() 會(huì)根據(jù)提供的函數(shù)對指定序列做映射。 第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。

可以看到,素質(zhì)三連print!得到的結(jié)果,map返回的結(jié)果是一個(gè) map 對象,而它本身的類型就是 map,將其轉(zhuǎn)化為 list,可以得到與不用 map 函數(shù)時(shí)的一樣結(jié)果!

實(shí)際上,如果會(huì)活學(xué)活用的話,還可以將上述代碼進(jìn)行縮減,用我們剛學(xué)過的 lambda 表達(dá)式來完成!

將普通函數(shù)注釋掉,使用匿名函數(shù)來完成,實(shí)際上就3行代碼即可完成,如下:

如果有多個(gè)參數(shù)作為匿名函數(shù)的入?yún)⑷绾螌懩?#xff1f;

可以使用 pycharm 自帶的源碼查看功能,查看 map 函數(shù)的定義,按住 Ctrl 點(diǎn)擊 map 即可:

map 第一個(gè)參數(shù)傳入函數(shù)名稱,第二個(gè)傳入的是一個(gè)可以迭代的對象,例如list,而用紅框標(biāo)出來的其中包括了一個(gè) * 號(hào),在Python中參數(shù)前面跟一個(gè)星號(hào)代表多個(gè)形參的意思。所以我們可以寫法如下,當(dāng)有兩個(gè)相同 list 時(shí),多次傳入 map 函數(shù)中即可:

現(xiàn)在是相同的個(gè)數(shù)的 list ,如果要是不同個(gè)數(shù)內(nèi)容的 list 會(huì)如何?做個(gè)實(shí)驗(yàn),將 list_b 的個(gè)數(shù)改為 10 個(gè)觀察下:

可以看到,即使兩個(gè)不同內(nèi)容的list進(jìn)行map計(jì)算,最終結(jié)果也會(huì)根據(jù)內(nèi)容少的list得到最終結(jié)果,也就是只進(jìn)行前6位的計(jì)算。

2. reduce 函數(shù)

reduce 函數(shù)不能直接進(jìn)行引用,在 Python3 中,reduce() 函數(shù)已經(jīng)被從全局命名空間里移除了,它現(xiàn)在被放置在 functools 模塊里,如果想要使用它,則需要通過引入 functools 模塊來調(diào)用 reduce() 函數(shù),還是先來看下 reduce 函數(shù)的語法使用:

reduce(function, iterable[, initializer])

function -- 函數(shù),有兩個(gè)參數(shù)

iterable -- 可迭代對象

initializer -- 可選,初始參數(shù)

函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。

老規(guī)矩,點(diǎn)進(jìn)去看源碼,其中有官方的文檔注釋:

咱們就用它注釋中的例子來實(shí)踐一下,作為 reduce 的第一個(gè)函數(shù),入?yún)⒈仨毷莾蓚€(gè)參數(shù),否則會(huì)報(bào)錯(cuò),例如下面:

改成官方例子:

素質(zhì)二連,print出結(jié)果,可以看到這次與 map 函數(shù)不同,返回的結(jié)果是一個(gè)計(jì)算后的整數(shù) 15 !這個(gè) reduce 函數(shù)是怎么算出來的呢?仔細(xì)看過注釋的同學(xué)一定知道怎么來的了,實(shí)際上就是這樣來的:

第一次計(jì)算時(shí),x = 1,y = 2,于是將 1 + 2 = 3 的結(jié)果作為下一次調(diào)用時(shí)入?yún)⒌膞,而第二次計(jì)算時(shí)的 y 則是列表中的數(shù)字3 ......以此類推。

(1+2) --> ((1+2)+3) --> .... --> ((((1+2)+3)+4)+5)

reduce 函數(shù)是一個(gè)連續(xù)計(jì)算的函數(shù)!

再來看下 reduce 函數(shù)的第三個(gè)參數(shù),初始化第一個(gè)入?yún)⒅?#xff1a;

這個(gè)計(jì)算的順序則是第一次 x = 10,y = 1,將 x+y 的值 11 賦予第二次計(jì)算的 x 作為入?yún)?#xff0c;第二次計(jì)算時(shí)的 y = 2,第二次計(jì)算結(jié)果等于 11 + 2 = 13 .... 以此類推。

(10+1) --> (10+1)+2) --> ((10+1)+2)+3) .... --> ((((10+1)+2)+3)+4)+5)

3. filter 函數(shù)

filter 函數(shù),這個(gè)英文單詞的中文含義是過濾的意思。依然是看下官方語法:

filter(function, iterable)

function -- 判斷函數(shù)。

iterable -- 可迭代對象。

filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。 該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。

示例,請將下面的 list 中為小寫字母的字符串提取出來,生成一個(gè)新的列表:

思考一下再看答案喲:

結(jié)果如上圖,通過字符串的自帶函數(shù),islower() 可以判斷字符串是否是小寫字母,若是小寫字母則返回一個(gè) True ,可以看到筆者的 lambda 表達(dá)式用了一個(gè)三元表達(dá)式的寫法,來過濾掉了原列表的大寫字母,是不是很簡潔呢!畢竟人生苦短,我用Python啊!

map - reduce 擴(kuò)展知識(shí)

map / reduce 實(shí)際上是大數(shù)據(jù)中的一個(gè)編程模型,其中 map 代表映射的意思,reduce 代表歸約的意思,而這個(gè)模型主要是用來進(jìn)行并行計(jì)算的!可以用一張圖來看生動(dòng)的看下 hadoop (Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。)中的 map / reduce:

做三明治,用到了各種蔬菜,首先我們先將每個(gè)蔬菜切碎,通過map 映射成碎片,在使用 reduce 進(jìn)行并行計(jì)算使之合體!

總結(jié)

說一些學(xué)習(xí)上的技巧,對于一個(gè)新的函數(shù),首先學(xué)習(xí)看它的語法,第一時(shí)間可以去找官方文檔看,比如點(diǎn)進(jìn)去看它的官方注釋,如果英文看不懂的話呢,可以去菜鳥教程上搜下,上面也是有不少官方文檔的定義,都是中文教程。寫到現(xiàn)在,大部分Python小課堂上的小實(shí)例都是非常簡單的,入門與進(jìn)階通俗易懂,但是不要小瞧這些小 demo ,如果你真的把它們都弄明白了,就像前期種下一顆種子一樣,穩(wěn)定根基之后必將作為長成參天大樹的必要前提!

著作權(quán)歸作者所有

總結(jié)

以上是生活随笔為你收集整理的python小课堂28_python小课堂28的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 婷婷99 | 草啪啪 | 欧美精品在线视频观看 | 办公室摸腿吻胸激情视频 | 大伊人久久 | 国产视频精品一区二区三区 | 美女黄免费 | 99精品国产成人一区二区 | 青青国产在线观看 | 五月天丁香社区 | 国产伦精品一区二区三区视频网站 | 韩毛片 | 黄色你懂的| xx性欧美肥妇精品久久久久久 | 手机天堂网 | 天天爱天天爽 | 一区二区三区国产精品视频 | 欧美黄视频 | 国产精品欧美激情在线播放 | 国产精彩视频在线观看 | 西西44rtwww国产精品 | 欧美一级一级一级 | 国产精品毛片一区二区 | 国产精品一二三四五区 | 五月综合激情日本mⅴ | 华丽的外出在线 | 永久免费看黄网站 | 无码人妻精品一区二区蜜桃视频 | 顶级毛茸茸aaahd极品 | 日本一区不卡视频 | 欧美性生活视频 | 亚欧成人精品一区二区 | 人妖粗暴刺激videos呻吟 | 成人网页在线观看 | 无码精品国产一区二区三区 | 吸咬奶头狂揉60分钟视频 | 毛片www | 亚洲AV不卡无码一区二区三区 | 91视频国产一区 | 国产午夜伦理 | 中国三级视频 | 91成人午夜 | 亚洲精品69 | 国产一级α片 | 国产又粗又大又长 | 天天拍天天色 | 日本 奴役 捆绑 受虐狂xxxx | 99精品网站 | 国产福利电影在线 | 亚洲av片一区二区三区 | 免费成人深夜 | 午夜不卡av | 亚洲欧美综合自拍 | 中文字幕免费高清 | 亚洲永久精品一区二区 | 国产suv精品一区二区60 | 成人污在线观看 | 中文字幕在线观看你懂的 | 亚洲va欧美va天堂v国产综合 | 看一级片 | 在线观看免费黄视频 | 国产良妇出轨视频在线观看 | 国产精品theporn| 日韩高清影视在线观看 | 日本美女性高潮 | 美女张开腿让男人操 | 国产成人一区二区三区 | 性歌舞团一区二区三区视频 | 欧美另类videos | 亚洲毛片在线观看 | 日韩视频一区二区 | 在线看的av | 亚洲欧美在线播放 | 西西人体www大胆高清 | 国产精品久久久久久久9999 | 97色资源 | 日韩欧美国产高清91 | 狠狠干网 | 色就是色亚洲色图 | 免费的毛片网站 | 国产精品aaa| 最新日韩av在线 | 成人免费网站www网站高清 | 久久久久久欧美精品se一二三四 | 在线观看日韩精品 | 欧美日韩一区二区三区在线 | free黑人多人性派对hd | 婷婷视频在线观看 | 国产精品黄色av | 日p视频在线观看 | 精品国产成人av在线免 | 欧美日韩免费在线视频 | 成人av无码一区二区三区 | 亚洲欧美偷拍一区 | 久久久18 | 国产又色又爽又黄的 | 欧美在线视频一区二区三区 | 久久久久影视 | 涩涩涩999 |