python筆記5:函數式編程

來源:互聯網
上載者:User

標籤:--   成績   單行函數   匿名函數   pytho   保留   單行   ble   比較   

5 函數式編程(即高階函數,將函數作為參數傳入) map():

map()函數接收兩個參數,一個是傳入函數,一個是Iterable,map將傳入函數依次作用到序列的每個元素,並把結果作為新的Iterator返回。

如:map(f, [x1, x2, x3, x4]) = [f(x1),f(x2),f(x3),f(x4)] -->把f(x)作用在list的每一個元素並將結果產生一個新的list
reduce():
如:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) -->將f(x)作用在一個序列上,並將結果繼續和序列的下一個元素做累積計算
filter():

filter()用於過濾序列,

如:filter(f, [x1, x2, x3, x4]) -->把篩選函數依次作用於序列的每個元素,然後根據傳回值是True/False決定保留/丟棄該元素。
sorted():

sorted()用於排序 (內幕:對於元素 x,y,若x < y,則返回‐1,若x == y,返回0,若x > y,返回1。這樣,排序演算法就不用關心具體的比較過程,而是根據比較結果直接排序。)

sorted(iterable , key=函數 , reverse=True) --> key函數作用於list中的每個元素,根據其返回結果進行排序,第三個參數為反向排序時使用。
例子:L = [(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66), (‘Lisa‘, 88)]    print(sorted(L,key=lambda i:i[0])) #按名字排序    print(sorted(L,key=lambda i:i[1])) #按成績排序
閉包 Closure:

閉包 Closure用於將函數作為結果值返回
  返回閉包(某函數)時牢記:該函數並未執行,返回函數中不要引用任何可能會變化的變數。(即包在裡面的函數,不要引用外部函數的任何迴圈變數)
  如果一定要引用迴圈變數,則再建立一個函數,用該函數的參數綁定迴圈變數當前的值

lambda函數:

匿名函數(lambda函數):

(文法)lambda [arg1 [,arg2,.....argn]]:expression

如:lambda x: x * x --> 冒號前是參數,可以有多個,用逗號隔開,冒號右邊的傳回值。

易錯:fs = [(lambda n: i + n) for i in range(10)]與 fs = [(lambda n, i=i : i + n) for i in range(10)]

注意:1.使用lambda,lambda內不要包含迴圈;

   2.lambda只是為了減少單行函數的定義而存在的;

   3.可用for...in...if來完成的,堅決不用lambda。

python筆記5:函數式編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.