python lambda map reduce_簡單了解python filter、map、reduce的區別

這篇文章主要介紹了簡單了解python filter、map、reduce的區別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

python中有一些非常有趣的函數,面試的時候可能會遇到。今天也來總結一下,不過該類的網上資料也相當多,也沒多少干貨,只是習慣性將一些容易遺忘的功能進行整理。

lambda 為關鍵字。filter,map,reduce為內置函數。

lambda:實現python中單行最小函數。

g = lambda x: x * 2

#相當于

def g(x):

return x*2

filter(function, sequence): 對sequence中的item依次執行function(item),將執行結果為True的item組成一個List/String/Tuple(取決于sequence的類型)。

filter(function or None, sequence) -> list, tuple, or string:入參為函數和列表/元組/字符串,返回值為item列表/元組/字符串。

map(function, sequence) : 對sequence中的item依次執行function(item),將執行結果function(item)組成一個List返回。map(function, sequence[, sequence, ...]) -> list:入參是為函數和列表/元組/字符串,返回值為function(item)列表。

reduce(function, sequence, starting_value): 對sequence中的item順序迭代調用function,如果有starting_value,還可以作為初始值調用。function接收的參數個數只能為2,先把sequence中第一個值和第二個值當參數傳給function,再把function的返回值和第三個值當參數傳給function,然后只返回一個結果。

reduce(function, sequence[, initial]) -> value:入參是為函數和列表/元組/字符串和初始值,返回值為數值。

用法舉例:

#coding=utf-8

#1.lambda用法,冒號之前的是入參,冒號之后的是表達式,返回的值,最簡單的函數

print [(lambda x:x*x)(x)for x in range(11)]

#結果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print (lambda x:x*x)(3)

#結果:9

g=lambda x:x*x

print g(4)

#結果:16

#2.filter用法:返回執行結果為TRUE的入參(入參是列表字符元組)

print filter(lambda x:x*x-4,range(10))

#結果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

#3.map的用法:對列表入參依次執行函數。入參為列表,有多少個列表,就應該有多少個入參。

print map(lambda x:x*x-4,range(10))

#結果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]

print map(lambda x,y:x*y-4,range(3),[8,9,10])

#結果:[-4, 5, 16]

#4.reduce用法:先把sequence中第一個值和第二個值當參數傳給function,再把function的返回值和第三個值當參數傳給fuction,最終返回一個結果值

#接收的入參個數只能為2

print reduce(lambda x,y:x*y-4,range(4))

#結果:-40

#計算0到100的和

print reduce(lambda x,y:x+y, range(101))

#結果:5050

print reduce(lambda x,y:x+y, range(101),100)

#結果:5150

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持聚米學院。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453589.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試問題匯總 精選 分析 解答 職業規劃 part 4

程序員做業余項目、記筆記和寫博客的重要性【經典】 編程是一種創造過程,業余項目允許程序員在沒有截止日期或各種限制的條件下,以探索形式編程。業余項目之所以重要,有以下幾個原因。 探索新技術 每天都會不斷有新技術出現,而…

NB-IOT連接移動onenet平臺流程

1. 先創建賬號,然后創建產品 2. 創建設備,用ATCGSN和ATCIMI查詢NB-IOT的IMEI和IMSI填寫上去。 3. 創建好的設備。 轉載于:https://www.cnblogs.com/429512065qhq/p/8359247.html

sort,uniq,wc指令簡單用法

sort用于排序,可以根據不同的數據類型來進行排序,例如想要查看最后一個登陸的用戶信息,可以把last和sort結合起來使用,按照登陸時間排序。 使用sort排序: sort常用參數: -f :忽略大小寫的差異 -…

java ejb jsp 架構_JavaEE架構

B/S 體系結構image.pngJava EE 經典架構image.pngJava EE 13規范JDBCimage.pngJDBC 對象與接口java.sql.DriverManager:用于管理JDBC驅動的服務類,當JDBC驅動加載至內存后,DriverManager會自動注冊JDBC驅動,然后通過getConnection…

音視頻中的CBR,VBR,ABR

視頻碼率CBR和VBR 固定碼率(CBR)與可變碼率(VBR) 一般在我們輸出視頻文件的時候都會碰到一個選擇即CBR與VBR,CBR的英文全稱是Constant Bit Rate翻譯過來是固定碼率,就是說每一秒種的畫面如果看做是一個…

fifo java_java – 如何保證ThreadPoolExecutor中的FIFO執行順序

我用這行代碼創建一個ThreadPoolExecutor:private ExecutorService executor new ThreadPoolExecutor(5, 10, 120, TimeUnit.SECONDS, new ArrayBlockingQueue(20, true));然后,我運行25個任務(T01到T25),所以情況是:>目前正在運行的5個任務(T01到T0…

HihoCoder 1671 DFS

本以為是個簡單的水題,好吧,其實就是個水題,雖然我還是…… 題意的理解上有一點小小的問題orz,這里的括號里的字母是可以看成一個整體的,可以看作一個字母來進行反轉, 比如說,(abc(de))&#xf…

avs 中國音視頻標準DRA 中音頻標準及應用

DRA 是Digital Rise Audio的縮寫。是廣州廣晟數碼技術有限公司(Digital Rise Technology)開發的一項數字音頻編碼技術,目前是音頻編碼的國家標準。2007年1月被批準成為中國電子行業標準(標準號SJ/T11368-2006)。DRA音頻標準可應用…

UWP數據綁定

已針對 Windows 10 上的 UWP 應用更新。 有關 Windows 8.x 文章,請參閱存檔 ] 數據綁定是你的應用 UI 用來顯示數據的一種方法,可以選擇與該數據保持同步。 借助數據綁定,你可以將關注的數據從關注的 UI 中分離開來,從而可形成一個…

資源鏈接

http://cn.epubee.com/ 電子書 http://www.feemic.cn/mooc_search/1002384010 中國大學mooc視頻下載 http://www.icourse163.org 中國大學mooc http://www.xuetangx.com 學堂在線 http://yun.java1234.com/ 視頻搜索 http://www.52studyit.com/轉載于:https://www.cnblogs.co…

最大開源代碼sourceforge 簡介 及視音頻方面常用的開源代碼

所有的音視頻凱源代碼在這里:http://sourceforge.net/directory/audio-video/os:windows/,你可以下載分析,視頻不懂請發郵件給我,幫你分析。 0.視頻項目 0.1 VLC media player VLC 多媒體播放器(最初為VideoLAN Clien…

[轉]被當做狗和雞來驅趕的百姓

原文鏈接:知乎 杜甫寫過許多好詩。 好詩,不一定是辭藻美、場面好、色色入畫。 不一定是吳楚東南坼,乾坤日夜浮。不一定是五更鼓角聲悲壯,三峽星河影動搖。 不一定是星垂平野闊,月涌大江流。不一定是細雨魚兒出&#xf…

背包問題(動態規劃)

本篇文章作為個人的背包問題學習資料,來自轉載 dd大牛的《背包九講》. P01: 01背包問題 題目 有N件物品和一個容量為V的背包。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使這些物品的費用總和不超過背包容量,且價值總和最大…

notepad編譯java_Notepad++直接編譯運行java代碼的具體步驟

最近不少朋友表示還不會Notepad直接編譯運行java代碼的操作步驟,使用下面小編就帶來了Notepad直接編譯運行java代碼的操作方法哦,一起去看看吧。Notepad直接編譯運行java代碼的具體步驟下載Notepad,找到Plugin Manager。插件--->Plugin Ma…

基于linux 的2048

于 debian 接著寫 2048, 的影響,如下面的: 感興趣的朋友能夠在這里(http://download.csdn.net/download/kamsau/7330933)下載。 版權聲明:本文博客原創文章,博客,未經同意,不得轉載。…

架構師之路

1. 架構師之路(1)---面向過程和面向對象 1、引言 機算機科學是一門應用科學,它的知識體系是典型的倒三角結構,所用的基礎知識并不多,只是隨著應用領域和方向的不同,產生了很多的分支,所以說編程并不是一件很困難的…

r語言做斷軸_R語言用nls做非線性回歸以及函數模型的參數估計

非線性回歸是在對變量的非線性關系有一定認識前提下,對非線性函數的參數進行最優化的過程,最優化后的參數會使得模型的RSS(殘差平方和)達到最小。在R語言中最為常用的非線性回歸建模函數是nls,下面以car包中的USPop數據集為例來講解其用法。數…

day8-異常處理與網絡編程

第1章 異常處理 1.1 什么是異常? 1.1.1 描述 #1 什么是異常? # 異常是錯誤發生的信號,一旦程序出錯,就會產生一個異常,應用程序未處理該異常, # 異常便會拋出,程序隨之終止 異常就是程序運行時發生錯誤的信…

常用數據結構的一部分類

VECTORvector是可以實現自動增長的對象數組。java.util.vector提供了向量類(vector)來實現向量數組的功能。在C和C中可以使用指針來實現動態數組,java通過提供大量的類庫來彌補這個功能。向量類的對象 可以向其中隨意插入不同類的對象&#x…

進程(并發,并行) join start 進程池 (同步異步)

一、背景知識 顧名思義,進程即正在執行的一個過程。進程是對正在運行程序的一個抽象。進程的概念起源于操作系統,是操作系統最核心的概念,也是操作系統提供的最古老也是最重要的抽象概念之一。操作系統的其他所有內容都是圍繞進程的概念展開的…