熱線電話:13121318867

登錄
首頁精彩閱讀簡單了解Python中的幾種函數
簡單了解Python中的幾種函數
2018-01-19
收藏

簡單了解Python中的幾種函數

python是支持多種范型的語言,可以進行所謂函數式編程,其突出體現在有這么幾個函數: filter、map、reduce、lambda、yield
lambda    
>>> g = lambda x,y:x+y #x+y,并返回結果
>>> g(3,4)
7
>>> (lambda x:x**2)(4) #返回4的平方
16
lambda函數的使用方法:
在lambda后面直接跟變量
變量后面是冒號
冒號后面是表達式,表達式計算結果就是本函數的返回值
冒號后面是表達式,表達式計算結果就是本函數的返回值

比如,要打印一個list,里面依次是某個數字的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的一個內置函數,它的基本樣式是:

map(func,seq)

func是一個函數,seq是一個序列對象。在執行的時候,序列對象中的每個元素,按照從左到右的順序,依次被取出來,并放入

到func那個函數里面,并將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中的每個元素,依次應用function的方法(本質上就是一個for循環)

將所有結果返回一個list

如果參數很多,則對那些參數并行執行function

繼續下面兩個例子:    
>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,0]
>>> map(lambda x,y: x+y, lst1,lst2)   #將兩個列表中的對應項加起來,并返回一個結果列表
[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函數的強大和簡潔。如果使用for循環將會很繁瑣

reduce

直接看例子:    
>>> reduce(lambda x,y: x+y,[1,2,3,4,5])
15

reduce函數的計算方式是將列表中的元素累加,((((1+2)+3)+4)+5)=15 與map函數相比較就可以看出兩者之間的區別。map是上下運算,reduce是橫著逐個元素進行運算。

reduce含可以接受第三個值作為初始值:例如    
>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100)
115

上述列表中計算將以100為初始值執行累加計算,先計算 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.
總結
以上就是本文關于簡單了解Python中的幾種函數的全部內容,希望對大家有所幫助。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢