1. Python有哪些高階函數(shù),功能分別是什么
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)與策劃設(shè)計,黃巖網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:黃巖等地區(qū)。黃巖做網(wǎng)站價格咨詢:18982081108
Python有三大高階函數(shù),分別是 map 、 reduce 、 filter 函數(shù)。
2. map高階函數(shù)
map函數(shù)有兩個參數(shù),第一個參數(shù)要求傳遞一個函數(shù)對象,第二個參數(shù)要求傳遞一個可迭代序列。直接看案例
運行結(jié)果:
3. reduce高階函數(shù)
reduce高階函數(shù)位于functools模塊中,使用前需要先進(jìn)行導(dǎo)入。reduce高階函數(shù)可以有三個參數(shù),第一個參數(shù)要求傳遞一個函數(shù)對象(必傳),第二個參數(shù)要求傳遞一個可迭代序列(必傳),第三個函數(shù)是一個初始值(不必傳,可以有默認(rèn)值)。直接看案例
運行結(jié)果:
4. filter高階函數(shù)
filter高階函數(shù)有兩個參數(shù),第一個參數(shù)是一個函數(shù)對象,第二個參數(shù)是一個可迭代序列。直接看案例
運行結(jié)果:
Lambda 函數(shù)
Python 函數(shù)一般使用 def a_function_name() 樣式來定義,但是對于 lambda 函數(shù)來說,我們其實根本沒為它命名。這是因為 lambda 函數(shù)的功能是執(zhí)行某種簡單的表達(dá)式或運算,而無需完全定義函數(shù)。
Map 函數(shù)
Map() 是一種內(nèi)置的 Python 函數(shù),它可以將函數(shù)應(yīng)用于各種數(shù)據(jù)結(jié)構(gòu)中的元素,如列表或字典。對于這種運算來說,這是一種非常干凈而且可讀的執(zhí)行方式。
Filter 函數(shù)
filter 內(nèi)置函數(shù)與 map 函數(shù)非常相似,它也將函數(shù)應(yīng)用于序列結(jié)構(gòu)(列表、元組、字典)。二者的關(guān)鍵區(qū)別在于 filter() 將只返回應(yīng)用函數(shù)返回 True 的元素。
Itertools 模塊
Python 的 Itertools 模塊是處理迭代器的工具集合。迭代器是一種可以在 for 循環(huán)語句(包括列表、元組和字典)中使用的數(shù)據(jù)類型。
使用 Itertools 模塊中的函數(shù)讓你可以執(zhí)行很多迭代器操作,這些操作通常需要多行函數(shù)和復(fù)雜的列表理解。
Generator 函數(shù)
其實,Generator函數(shù)是一個類似于迭代器的函數(shù),就是它也可以用在 for 循環(huán)語句中。這大大簡化了你的代碼,而且相比簡單的 for 循環(huán),它節(jié)省了很多內(nèi)存。
關(guān)于Python的5種高級用法,青藤小編就和您分享到這里了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關(guān)于python編程的技巧及素材等內(nèi)容,可以點擊本站的其他文章進(jìn)行學(xué)習(xí)。
8個超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強大,用好了可以大大提高代碼效率。
這次來梳理下8個好用的python內(nèi)置函數(shù)
1、set()
當(dāng)需要對一個列表進(jìn)行去重操作的時候,set()函數(shù)就派上用場了。
用于創(chuàng)建一個集合,集合里的元素是無序且不重復(fù)的。集合對象創(chuàng)建后,還能使用并集、交集、差集功能。
2、eval()之前有人問如何用python寫一個四則運算器,輸入字符串公式,直接產(chǎn)生結(jié)果。用eval()來做就很簡單:eval(str_expression)作用是將字符串轉(zhuǎn)換成表達(dá)式,并且執(zhí)行。
3、sorted()在處理數(shù)據(jù)過程中,我們經(jīng)常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted() ,它可以對任何可迭代對象進(jìn)行排序,并返回列表。對列表升序操作:
對元組倒序操作:
使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:
根據(jù)自定義規(guī)則,對元組構(gòu)成的列表進(jìn)行排序:
4、reversed()如果需要對序列的元素進(jìn)行反轉(zhuǎn)操作,reversed()函數(shù)能幫到你。reversed()接受一個序列,將序列里的元素反轉(zhuǎn),并最終返回迭代器。
5、map()做文本處理的時候,假如要對序列里的每個單詞進(jìn)行大寫轉(zhuǎn)化操作。這個時候就可以使用map()函數(shù)。
map()會根據(jù)提供的函數(shù),對指定的序列做映射,最終返回迭代器。也就是說map()函數(shù)會把序列里的每一個元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個例子,對列表里的每個數(shù)字作平方處理:
6、reduce()前面說到對列表里的每個數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個元素相乘,該怎么做呢?這時候用到reduce()函數(shù)。
reduce()會對參數(shù)序列中元素進(jìn)行累積。第一、第二個元素先進(jìn)行函數(shù)操作,生成的結(jié)果再和第三個元素進(jìn)行函數(shù)操作,以此類推,最終生成所有元素累積運算的結(jié)果。再舉個例子,將字母連接成字符串。
你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來講,是因為它太重要了。
7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?
filter()函數(shù)輕松完成了任務(wù),它用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個元素映射到函數(shù),最終返回結(jié)果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個場景,同時打印出序列里每一個元素和它對應(yīng)的順序號,我們用enumerate()函數(shù)做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數(shù)用于對序列里的元素進(jìn)行順序標(biāo)注,返回(元素、索引)組成的迭代器。再舉個例子說明,對字符串進(jìn)行標(biāo)注,返回每個字母和其索引。
1、高階函數(shù)
變量可以指向函數(shù),函數(shù)的參數(shù)可以接收變量,那么函數(shù)可以接收另一個函數(shù)作為參數(shù),這種函數(shù)稱為高階函數(shù)。
(1)把函數(shù)作為實參
(2)把函數(shù)作為返回值
2、系統(tǒng)的內(nèi)置高階函數(shù)
(1)map函數(shù):接收兩個參數(shù),一個是函數(shù),一個是序列,map將傳入的函數(shù)依次作用到序列的每個元素,并且把結(jié)果作為新的列表返回
(2)reduce函數(shù):把一個函數(shù)作用到一個序列上,這個函數(shù)必須接收兩個參數(shù),reduce把結(jié)果和序列的下一個元素做累積計算
(3)filter函數(shù):也接收一個函數(shù)和一個序列,和map函數(shù)不同的是,filter函數(shù)把傳入的函數(shù)依次作用于每個元素,然后返回返回值是True的元素
(4)sorted函數(shù):排序函數(shù)
把用戶名按照首字母不區(qū)分大小寫排序
(5)sorted()函數(shù)按照關(guān)鍵字排序
關(guān)鍵字:商品個數(shù)
(6)sorted()函數(shù)按照關(guān)鍵字排序,用鍵值來查找
(7)lambda匿名函數(shù):有時候傳參數(shù)時不需要顯示自定義的函數(shù),直接傳入匿名函數(shù)更方便;冒號前面的x,y表示函數(shù)參數(shù),匿名函數(shù)不需要擔(dān)心函數(shù)名的沖突,匿名函數(shù)也是一個函數(shù)對象,可以把匿名函數(shù)賦值給一個變量,再利用變量來調(diào)用函數(shù),匿名函數(shù)也可以作為返回值返回
3、高階函數(shù)的應(yīng)用:
(1)sorted函數(shù):
(2)sorted函數(shù)默認(rèn)是從小到大排序
4、裝飾器
裝飾器就是用來裝飾函數(shù)的:想要增加原有函數(shù)的功能,但是不希望修改原有函數(shù)的定義,在代碼運行期間動態(tài)增加功能的方式
(1)此裝飾器的功能:計算函數(shù)的運行時間
import functools
@functools.wraps(f)? ?##保留原有函數(shù)的屬性
運行結(jié)果:
(2)此裝飾器的功能:用戶登錄認(rèn)證
運行結(jié)果:
(3)此裝飾器的功能:認(rèn)證用戶的同時,顯示用戶的轉(zhuǎn)賬金額
import inspect
inspect.getcallargs()將傳的參數(shù)封裝為一個字典,字典的key值是形式參數(shù),value值是實參
(4)此裝飾器的功能:確保收到的每個參數(shù)都是整數(shù),是整數(shù)就求和,否則拋出錯誤
(5)此裝飾器的功能:給裝飾器傳參數(shù),是整數(shù)和浮點數(shù)就求和
python學(xué)習(xí)網(wǎng),大量的免費python視頻教程,歡迎在線學(xué)習(xí)!
當(dāng)前名稱:Python高級函數(shù)合集 python集合常用函數(shù)
分享鏈接:http://sd-ha.com/article2/hiejic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、手機網(wǎng)站建設(shè)、網(wǎng)站策劃、虛擬主機、做網(wǎng)站、用戶體驗
聲明:本網(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)