初學 Python(十二)——高階函數

來源:互聯網
上載者:User

標籤:sort   位置   return   順序   pack   整理   擷取   改變   高階函數   

初學 Python(十二)——高階函數

 

  初學 Python,主要整理一些學習到的知識點,這次是高階函數。

#-*- coding:utf-8 -*-      ‘‘‘‘‘ 話說高階函數: 能用函數作為參數的函數 稱為高階函數 ‘‘‘  #函數作參  def f(x):      return x*x    #map函數為內建函數,意思為將第二個參數的list作用到f函數中  #最後的結果為一個list  print map(f,[1,2,3,4,5])  #reduce函數為內建函數,意思將第二參數的序列作用到add函數值  #將結果做累加計算,最後的結果為一個數  def add(x,y):      return x+y  print reduce(add,[1,2,3,4,5,6])  #給出一個整數的每個位置上的數,得到該整數    def fn(x,y):      return x*10+y  print reduce(fn,[1,2,3,4,5])    #字串轉int    print reduce(fn,map(int,‘12345‘))    def str2int(s):      def fn(x,y):          return x*10+y      return reduce(fn,map(int,s))      print str2int(‘123456‘)  ‘‘‘‘‘ 上面函數的調用步驟是: 1.得到reduce(fn,map(int,‘123456‘)) 2.得到reduce(fn,[1,2,3,4,5,6]) 3.得到reduce(x*10+y,[1,2,3,4,5,6]) 4.得到123456 ‘‘‘  def str2int2(s):      return reduce(lambda x,y:x*10+y,map(int,s))  print str2int2(‘1234567‘)      #排序  print sorted(‘313568‘)  print sorted((1,8,4,2,5))  print sorted([9,8,7,6,5,4,3])  print sorted([‘name‘,‘Age‘,‘Sex‘,‘address‘])  #sorted也是一個高階函數,所以它也可以傳函數來改變排序的演算法  #倒序  def inverted_order(x,y):      if x>y:          return -1      elif x<y:          return 1      else:          return 0  print sorted((1,8,4,2,5),inverted_order)    #改變字串排序演算法  #上面字串排序是根據ascii碼來判斷大小  #由於大寫字母都比小寫字母的ascii碼小,  #但是一般我們都是按照字母表的順序排列  #下面來變換一下演算法,忽略大小寫    def alphabet(s1,s2):      l1 = s1.lower()      l2 = s2.lower()      if l1 < l2:          return -1      elif l2 < l1:          return 1      else:          return 0    print sorted([‘name‘,‘Age‘,‘Sex‘,‘address‘],alphabet)    ‘‘‘‘‘ 函數作為傳回值 其實剛才在將字串轉int時就涉及到了 這種將函數作為傳回值的形式 ‘‘‘    def sum(*args):      sum = 0      for n in args:          sum+=n      return sum  print sum(1,2,3,4,5)    #改裝成返回函數的形式    def sum_pack(*args):      def sum():          sum1 = 0          for n in args:              sum1+=n          return sum1      return sum    g = sum_pack(1,2,3,4,5)  print g  #<function sum at 0x0134C0F0>  #g輸出為函數,想列印結果要調用函數  print g()      ‘‘‘‘‘ 閉包的定義: 字函數自動擷取父函數的變數和參數 進入我的地盤就是我的 而且每一次調用返回的函數 都不是同一個對象 ‘‘‘    g1 = sum_pack(1,2,3,4,5)  g2 = sum_pack(1,2,3,4,5)  print g1==g2

 

初學 Python(十二)——高階函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.