天天看點

匿名函數 | Python從入門到精通:高階篇之十四

檢視上一節:初識高階函數

過濾器filter函數

首先打開

官網

,找到

Library Reference

,點選打開:

匿名函數 | Python從入門到精通:高階篇之十四

找到

build in Functions

匿名函數 | Python從入門到精通:高階篇之十四

在這裡面找到

filter()
匿名函數 | Python從入門到精通:高階篇之十四

filter就是一個過濾器的意思。filter()可以從序列中過濾出符合條件的元素,儲存到一個新的序列中。

參數:

1.函數,根據該函數來過濾序列(可疊代的結構)

2.需要過濾的序列(可疊代的結構)

傳回值:

過濾後的新序列(可疊代的結構)

變換上節課的示例:

# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]

# 這個函數可以将3的倍數取出
def fn4(i):
    if i % 3 == 0 :
        return True
    return False
def fn(func , lst) :# 定義高階函數fn

    # 建立一個新清單
    new_list = []

    # 對清單進行篩選
    for n in lst :
      new_list.append(n)
    # 傳回新清單
    return new_list

print(list(filter(fn4 , l)))           

執行結果為:

匿名函數 | Python從入門到精通:高階篇之十四

可以看到此時列印的結果還是3的倍數。

總結:

fn4是作為參數傳遞進filter()函數中, 而fn4實際上隻有一個作用,就是作為filter()的參數,filter()調用完畢以後,fn4就已經沒用了。

lambda函數

但是這樣并不推薦使用,接下來介紹一種新的函數:匿名函數(也叫 lambda )(文法糖)

lambda函數表達式專門用來建立一些簡單的函數,他是函數建立的又一種方式。

文法:lambda 參數清單 : 傳回值

匿名函數一般都是作為參數使用,其他地方一般不會使用。用于簡單的函數,複雜的不建議使用。

計算兩數之和:

print((lambda a,b:a+b)(10,20))           
匿名函數 | Python從入門到精通:高階篇之十四

一般是不這麼使用的,這裡隻是介紹一下lambda函數的用法。

還有一種用法,可以将匿名函數指派給一個變量:

# 3的倍數
r=filter(lambda i : i % 3==0,l)
print(r)           

而且在這裡隻需要調整lambda裡面的傳回值内容即可,不需要另外建構函數。

map函數

可周遊可疊代對象的所有元素做指定的操作,然後将其添加到一個新的清單中傳回。

示例:将清單中的元素都加1

# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]

r=map(lambda i : i+1,l)
print(list(r))           

執行結果為:

匿名函數 | Python從入門到精通:高階篇之十四

點選檢視配套視訊教程

擷取更多内容,請訂閱

Python學習站

官方技術圈!