簡單了解python filter、map、reduce的區(qū)別
這篇文章主要介紹了簡單了解python filter、map、reduce的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
python中有一些非常有趣的函數(shù),面試的時(shí)候可能會(huì)遇到。今天也來總結(jié)一下,不過該類的網(wǎng)上資料也相當(dāng)多,也沒多少干貨,只是習(xí)慣性將一些容易遺忘的功能進(jìn)行整理。
lambda 為關(guān)鍵字。filter,map,reduce為內(nèi)置函數(shù)。
lambda:實(shí)現(xiàn)python中單行最小函數(shù)。
g = lambda x: x * 2 #相當(dāng)于 def g(x): return x*2
- filter(function, sequence): 對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為True的item組成一個(gè)List/String/Tuple(取決于sequence的類型)。
- filter(function or None, sequence) -> list, tuple, or string:入?yún)楹瘮?shù)和列表/元組/字符串,返回值為item列表/元組/字符串。
- map(function, sequence) : 對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果function(item)組成一個(gè)List返回。map(function, sequence[, sequence, ...]) -> list:入?yún)⑹菫楹瘮?shù)和列表/元組/字符串,返回值為function(item)列表。
reduce(function, sequence, starting_value): 對(duì)sequence中的item順序迭代調(diào)用function,如果有starting_value,還可以作為初始值調(diào)用。function接收的參數(shù)個(gè)數(shù)只能為2,先把sequence中第一個(gè)值和第二個(gè)值當(dāng)參數(shù)傳給function,再把function的返回值和第三個(gè)值當(dāng)參數(shù)傳給function,然后只返回一個(gè)結(jié)果。
reduce(function, sequence[, initial]) -> value:入?yún)⑹菫楹瘮?shù)和列表/元組/字符串和初始值,返回值為數(shù)值。
用法舉例:
#coding=utf-8 #1.lambda用法,冒號(hào)之前的是入?yún)?,冒?hào)之后的是表達(dá)式,返回的值,最簡單的函數(shù) print [(lambda x:x*x)(x)for x in range(11)] #結(jié)果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] print (lambda x:x*x)(3) #結(jié)果:9 g=lambda x:x*x print g(4) #結(jié)果:16 #2.filter用法:返回執(zhí)行結(jié)果為TRUE的入?yún)ⅲㄈ雲(yún)⑹橇斜碜址M) print filter(lambda x:x*x-4,range(10)) #結(jié)果:[0, 1, 3, 4, 5, 6, 7, 8, 9] #3.map的用法:對(duì)列表入?yún)⒁来螆?zhí)行函數(shù)。入?yún)榱斜?,有多少個(gè)列表,就應(yīng)該有多少個(gè)入?yún)ⅰ? print map(lambda x:x*x-4,range(10)) #結(jié)果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77] print map(lambda x,y:x*y-4,range(3),[8,9,10]) #結(jié)果:[-4, 5, 16] #4.reduce用法:先把sequence中第一個(gè)值和第二個(gè)值當(dāng)參數(shù)傳給function,再把function的返回值和第三個(gè)值當(dāng)參數(shù)傳給fuction,最終返回一個(gè)結(jié)果值 #接收的入?yún)€(gè)數(shù)只能為2 print reduce(lambda x,y:x*y-4,range(4)) #結(jié)果:-40 #計(jì)算0到100的和 print reduce(lambda x,y:x+y, range(101)) #結(jié)果:5050 print reduce(lambda x,y:x+y, range(101),100) #結(jié)果:5150
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python人工智能使用RepVgg實(shí)現(xiàn)圖像分類示例詳解
這篇文章主要介紹了python人工智能使用RepVgg實(shí)現(xiàn)圖像分類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Python3 itchat實(shí)現(xiàn)微信定時(shí)發(fā)送群消息的實(shí)例代碼
使用微信,定時(shí)往指定的微信群里發(fā)送指定信息。接下來通過本文給大家分享Python3 itchat實(shí)現(xiàn)微信定時(shí)發(fā)送群消息的實(shí)例代碼,需要的朋友可以參考下2019-07-07
基于Python詞云分析政府工作報(bào)告關(guān)鍵詞
這篇文章主要介紹了基于Python詞云分析政府工作報(bào)告關(guān)鍵詞,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python?查找算法之二分查找線性查找與哈希查找實(shí)例探究
這篇文章主要為大家介紹了Python查找算法探究之二分查找、線性查找與哈希查找的實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
深入理解Python虛擬機(jī)中復(fù)數(shù)(complex)的實(shí)現(xiàn)原理及源碼剖析
在本篇文章當(dāng)中主要給大家介紹在 cpython 虛擬機(jī)當(dāng)中是如何實(shí)現(xiàn) 復(fù)數(shù) complex 這個(gè)數(shù)據(jù)類型的,這個(gè)數(shù)據(jù)類型在 cpython 當(dāng)中一應(yīng)該是一個(gè)算比較簡單的數(shù)據(jù)類型了,非常容易理解2023-03-03

