1. 程式人生 > 程式設計 >python lambda函式及三個常用的高階函式

python lambda函式及三個常用的高階函式

進行程式設計時,一般我們會給一個函式或者變數起一個名字,該名稱是用於引用或定址函式變數。但是有一個低調的函式,你不需要賦予它名字,因此該函式也叫匿名函式。該函式就是Python中的Lambda函式,下面就來為大家解析python—lambda函式,三個常用的高階函式。

為什麼要使用Python Lambda函式?

匿名函式可以在程式中任何需要的地方使用,但是這個函式只能使用一次,即一次性的。因此Python Lambda函式也稱為丟棄函式,它可以與其他預定義函式(如filter(),map()等)一起使用。相對於我們定義的可重複使用的函式來說,這個函式更加簡單便捷。

"""
lambda 引數列表 : 返回值
lambda 引數形式:
  1.無引數:lambda:100
  2.一個引數:lambda a: a
  3.預設引數:lambda a,b,c=100: a + b + c
  4.可變引數:*args,返回元組
  lambda *args: args
  5.可變引數:*kwargs,返回字典
  lambda **kwargs: kwargs
lambda 應用:簡化程式碼
  1.判斷,lambda a,b: a if a > b else b
  2.列表資料按字典 key 值排序
"""
# def fn1():
#   return 100
# def de1():
#   r = fn1()
#   print(r)
#   r2 = lambda: 100
#   print(r2)      # 地址:<function main.<locals>.<lambda> at 0x00CCD6E8>
#   print(r2())     # 返回值:100
# def test2():
"""
lambda 測試案例
"""
#   fn1 = lambda a,b: a + b
#   print(fn1(1,2))
#   fn2 = lambda *args: args
#   print(fn2(1,2,3))
#   print(fn2(1,3))
#   print(fn2(1))    # (1,)
#   fn3 = lambda **kwargs: kwargs
#   print(fn3(name='py',age=30))
#
#   fn4 = lambda a,b: a if a > b else b
#   print(fn4(100,200))
#
#   student = [{'name': 'a','id': '1','tel': 'a1'},#     {'name': 'b','id': '2','tel': 'b2'},#     {'name': 'c','id': '3','tel': 'c3'}]
#   student.sort(key=lambda x: x['name'])
#   print(student)
#   student.sort(key=lambda x: x['name'],reverse=True)
#   print(student)
#   student.sort(key=lambda x: x['id'])
#   print(student)
"""
高階函式:def add_num(a,f)
內建高階函式:
  1.map(func,list):
  將func 應用於list中的每一個元素,返回一個迭代器
  2.reduce(func,list):
  計算結果與下一個資料做累積計算,必須有兩個引數
  from functools import reduce
  3.filter(func,list):
  過濾掉不符合條件的元素,返回一個filter物件,可用list()轉換
"""
# def add_num(a,f):
#   # 傳入函式 f
#   return f(a) + f(b)
# def func(x):
#   return x ** 2
from functools import reduce
def add_2(a,b):
  return a + b
def func3(x):
  return x % 2 == 0
def main():
  """
  體驗高階函式
  :return:
  """
  # print(abs(-2))     # 求絕對值
  # print(round(0.1))    # 四捨五入
  # s1 = add_num(1,abs)
  # s2 = add_num(1,2.5,round)
  # print(s1,s2)
  list1 = [1,3,4,5]
  # map(func,list1)
  # print(list(map(func,list1)))
  # s = reduce(add_2,list1)
  # print(s)
  r = filter(func3,list1)
  print(r)    # <filter object at 0x00CAE2E0>
  print(list(r)) # [2,4]
if __name__ == '__main__':
  main()

總結

以上所述是小編給大家介紹的python lambda函式及三個常用的高階函式,希望對大家有所幫助!