開發與維運

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

查看上一節:初識高階函數

過濾器filter函數

首先打開官網,找到Library Reference,點擊打開:
image.png
找到build in Functions
image.png
在這裡面找到filter()
image.png
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)))

執行結果為:
image.png
可以看到此時打印的結果還是3的倍數。
總結:
fn4是作為參數傳遞進filter()函數中, 而fn4實際上只有一個作用,就是作為filter()的參數,filter()調用完畢以後,fn4就已經沒用了。

lambda函數

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

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

語法:lambda 參數列表 : 返回值

匿名函數一般都是作為參數使用,其他地方一般不會使用。用於簡單的函數,複雜的不建議使用。
計算兩數之和:

print((lambda a,b:a+b)(10,20))

執行結果為:
image.png
一般是不這麼使用的,這裡只是介紹一下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))

執行結果為:
image.png

點擊查看配套視頻教程

獲取更多內容,請訂閱Python學習站官方技術圈!

Leave a Reply

Your email address will not be published. Required fields are marked *