小甲魚python學習總結之函式——lambda fillter() map() 閉包 遞迴

尋歡公子發表於2020-10-25

一.概念及用法。

1.lambda。

   1. 定義簡單函式,沒有具體函式名(匿函式)
   2. 用法: lambda(關鍵字) x(輸入變數): f(x) (返回值)
   3. eg1:
        lambda x, y=3 : x * y    /等價於
        def fun_A(x, y=3):
      		return x * y
   4. eg2:
  		lambda x : x if x % 2 else None

2.filter().

   1.用法: filter( f(x)(函式) , 列表)  //列表中的數依次以自變數帶
   入f(x), 若f(x) == 1(返回值為真),將滿足該條件的X構成一個新列表。
   2.eg1:
   		list(filter(lambda n : not(n%3), range(1, 100))) //求出100
   		以內所有3的倍數

3.map().

  1. 用法: map(f(x)( 定義函式 ) , 列表(當自變數))   
  2. eg1:
  	list(map(lambda x, y : [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
  	輸出:[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
  3.列表推到式對比。
[[x,y] for x in [1,3,5,7,9] for y in[2,4,6,8,10]]
[[1, 2], [1, 4], [1, 6], [1, 8], [1, 10], [3, 2], [3, 4], [3, 6], [3, 8], [3, 10], [5, 2], [5, 4], [5, 6], [5, 8], [5, 10], [7, 2], [7, 4], [7, 6], [7, 8], [7, 10], [9, 2], [9, 4], [9, 6], [9, 8], [9, 10]]

4.遞迴。

 1.用法:概念與c語言一樣。
 2.eg:
def power(x, y):
    if y:
        return x * power(x, y-1)
    else:
        return 1
功能:x**y

5.閉包

 1.概念:定義函式中定義函式,理解看例子。
def funX():
    x = 5
    def funY():
        nonlocal x
        x += 1
        return x
    return funY

a = funX()
print(a())
print(a())
print(a())
結果:6  7   8
注意:nonlocal關鍵字  和 global 關鍵字

相關文章