簡單了解Python中的幾種函數(shù)
幾個特殊的函數(shù)(待補充)
python是支持多種范型的語言,可以進(jìn)行所謂函數(shù)式編程,其突出體現(xiàn)在有這么幾個函數(shù): filter、map、reduce、lambda、yield
lambda
>>> g = lambda x,y:x+y #x+y,并返回結(jié)果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16
lambda函數(shù)的使用方法:
在lambda后面直接跟變量
變量后面是冒號
冒號后面是表達(dá)式,表達(dá)式計算結(jié)果就是本函數(shù)的返回值
冒號后面是表達(dá)式,表達(dá)式計算結(jié)果就是本函數(shù)的返回值
比如,要打印一個list,里面依次是某個數(shù)字的1次方,二次方,三次方,四次方。用lambda可以這樣做:
>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ] >>> for i in lamb: ... print i(3), ... 3 9 27 81
map
map()是python的一個內(nèi)置函數(shù),它的基本樣式是:
map(func,seq)
func是一個函數(shù),seq是一個序列對象。在執(zhí)行的時候,序列對象中的每個元素,按照從左到右的順序,依次被取出來,并放入
到func那個函數(shù)里面,并將func的返回值依次存到一個list中。如
>>> items = [1,2,3,4,5] >>> squared = [] >>> for i in items: ... squared.append(i**2) ... >>> squared [1, 4, 9, 16, 25] >>> def sqr(x): return x**2 ... >>> map(sqr,items) [1, 4, 9, 16, 25] >>> map(lambda x: x**2, items) [1, 4, 9, 16, 25] >>> [ x**2 for x in items ] #這個我最喜歡了,一般情況下速度足夠快,而且可讀性強 [1, 4, 9, 16, 25]
要點:
對iterable中的每個元素,依次應(yīng)用function的方法(本質(zhì)上就是一個for循環(huán))
將所有結(jié)果返回一個list
如果參數(shù)很多,則對那些參數(shù)并行執(zhí)行function
繼續(xù)下面兩個例子:
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> map(lambda x,y: x+y, lst1,lst2) #將兩個列表中的對應(yīng)項加起來,并返回一個結(jié)果列表 [7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> lst3 = [7,8,9,2,1] >>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3) [14, 17, 20, 15, 6]
可以看到map函數(shù)的強大和簡潔。如果使用for循環(huán)將會很繁瑣
reduce
直接看例子:
>>> reduce(lambda x,y: x+y,[1,2,3,4,5]) 15
reduce函數(shù)的計算方式是將列表中的元素累加,((((1+2)+3)+4)+5)=15 與map函數(shù)相比較就可以看出兩者之間的區(qū)別。map是上下運算,reduce是橫著逐個元素進(jìn)行運算。
reduce含可以接受第三個值作為初始值:例如
>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100) 115
上述列表中計算將以100為初始值執(zhí)行累加計算,先計算 100+1
filter
filter的中文含義是“過濾器”,在python中,它就是起到了過濾器的作用.
通過下面代碼體會:
>>> numbers = range(-5,5) >>> numbers [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] >>> filter(lambda x: x>0, numbers) [1, 2, 3, 4] >>> [x for x in numbers if x>0] #與上面那句等效 [1, 2, 3, 4] >>> filter(lambda x: x > 3, [1,2,3,4,5]) [4,5]
拜讀下filter的官方文檔解釋:
filter(...) filter(function or None, sequence) -> list, tuple, or string Return those items of sequence for which function(item) is true. If function is None, return the items that are true. If sequence is a tuple or string, return the same type, else return a list.
總結(jié)
以上就是本文關(guān)于簡單了解Python中的幾種函數(shù)的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運算式、Python生成數(shù)字圖片代碼分享等,有什么問題可以隨時留言,小編會及時回復(fù)大家的。
相關(guān)文章
Django框架cookie和session方法及參數(shù)設(shè)置
這篇文章主要為大家介紹了Django框架cookie和session參數(shù)設(shè)置及介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03Python3 ffmpeg視頻轉(zhuǎn)換工具使用方法解析
這篇文章主要介紹了Python3 ffmpeg視頻轉(zhuǎn)換工具使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08Python語言檢測模塊langid和langdetect的使用實例
今天小編就為大家分享一篇關(guān)于Python語言檢測模塊langid和langdetect的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02python關(guān)于os.walk函數(shù)查找windows文件方式
這篇文章主要介紹了python關(guān)于os.walk函數(shù)查找windows文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08