程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> python函數式編程

python函數式編程

編輯:Python

版本:python2.7.6

lambda  filter()  map()  reduce()

三點:輸入,作用,輸出

 

 

1、lambda

lambda 參數:表達式   返回值為表達式的值

 >>> f=lambda x,y:x*y
 >>> f(4,6)
 24

參數匿名

 >>> L=[lambda x,y:x+y+1,lambda x,y:x+y+2,lambda x,y:x+y+3]
 >>> for f in L:
 ...     print f(1,2)
 ... 
 4
 5
 6
 >>> L[0](2,3)
 6
 >>> L[0]
 <function <lambda> at 0xb74e879c>

列表L 中的每個元素都是一個有兩個參數的匿名函數。

 

 

2、map()

輸入兩個參數:函數和可迭代對象

作用:對可迭代對象每個元素執行函數的操作

輸出:返回結果值的迭代對象

   返回迭代器(每次取一個結果值)(python3.4.3)

python2.7.6

 >>> def F(a):
 ...     return a**2
 ... 
 >>> map(F,[1,2,3,4])
 [1, 4, 9, 16]

pthon3.4.3

 >>> def F(a):
 ...     return a**2
 ... 
 >>> map(F,[1,2,3,4])
 <map object at 0xb70e2b2c>
 >>> q=map(F,[1,2,3,4])
 >>> list(q)
 [1, 4, 9, 16]

 

3、filter()

輸入:一個函數和一個序列。

作用:過濾數列,函數作用於序列每個元素,返回True保留,False則丟棄。

輸出:輸出過濾後的數列

          輸出迭代器(python3.4.3)

python2.7.6

 >>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7])
 [1, 3, 5, 7]

python3.4.3

 >>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7])
 <filter object at 0xb6ff3bcc>
 >>> f=filter(lambda x:x%2==1,[1,2,3,4,5,6,7])
 >>> list(f)
 [1, 3, 5, 7]

 

4、reduce()函數  (python3中移到functools包中)

輸入:函數和序列,函數必須接受兩個參數

作用:前兩個參數執行函數的運算,得到結果再與下一個參數運算。

輸出:所有參數的運算值

 >>> reduce(lambda x,y:x+y,[1,2,3,4])
 10

 

pthon3.4.3

 >>> from functools import reduce
 >>> reduce(lambda x,y:x+y,[1,2,3,4])
 10

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved