簡單了解python filter、map、reduce的區(qū)別
這篇文章主要介紹了簡單了解python filter、map、reduce的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(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): 對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) : 對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): 對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用法,冒號之前的是入?yún)ⅲ疤栔蟮氖潜磉_(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的用法:對列表入?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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Pycharm報(bào)錯(cuò):'NoneType'?object?has?no?attribute?
這篇文章主要給大家介紹了關(guān)于Pycharm報(bào)錯(cuò):'NoneType'?object?has?no?attribute?'bytes'的解決方法,文中通過圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02Python實(shí)現(xiàn)葵花8號衛(wèi)星數(shù)據(jù)自動(dòng)下載實(shí)例
這篇文章主要為大家介紹了Python實(shí)現(xiàn)葵花8號衛(wèi)星數(shù)據(jù)自動(dòng)下載實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Django restframework 源碼分析之認(rèn)證詳解
這篇文章主要介紹了Django-restframework 源碼分析之認(rèn)證詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02python使用pandas庫導(dǎo)入并保存excel、csv格式文件數(shù)據(jù)
CSV格式文件很方便各種工具之間傳遞數(shù)據(jù),平時(shí)工作過程之中會(huì)將數(shù)據(jù)保存為CSV格式,這篇文章主要介紹了python使用pandas庫導(dǎo)入并保存excel、csv格式文件數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2017-12-12Python scikit-learn數(shù)據(jù)預(yù)處理常見方法和步驟
數(shù)據(jù)預(yù)處理是數(shù)據(jù)準(zhǔn)備階段的一個(gè)重要環(huán)節(jié),主要目的是將原始數(shù)據(jù)轉(zhuǎn)換成適合機(jī)器學(xué)習(xí)模型使用的格式,數(shù)據(jù)預(yù)處理可以顯著提高機(jī)器學(xué)習(xí)模型的性能和準(zhǔn)確度,本文給大家介紹了Python數(shù)據(jù)預(yù)處理常見方法和步驟,需要的朋友可以參考下2024-05-05跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)
上一篇文章章中已經(jīng)講到連接兩個(gè)字符串的一種方法,本文繼續(xù)講訴連接字符串的方法2,字符串復(fù)制,字符串長度,字符大小寫的轉(zhuǎn)換,希望對大家有所幫助。2014-09-09