查看上一節:初識高階函數
過濾器filter函數
首先打開官網,找到Library Reference,點擊打開:
找到build in Functions:
在這裡面找到filter()
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)))
執行結果為:
可以看到此時打印的結果還是3的倍數。
總結:
fn4是作為參數傳遞進filter()函數中, 而fn4實際上只有一個作用,就是作為filter()的參數,filter()調用完畢以後,fn4就已經沒用了。
lambda函數
但是這樣並不推薦使用,接下來介紹一種新的函數:匿名函數(也叫 lambda )(語法糖)
lambda函數表達式專門用來創建一些簡單的函數,他是函數創建的又一種方式。
語法:lambda 參數列表 : 返回值
匿名函數一般都是作為參數使用,其他地方一般不會使用。用於簡單的函數,複雜的不建議使用。
計算兩數之和:
print((lambda a,b:a+b)(10,20))
執行結果為:
一般是不這麼使用的,這裡只是介紹一下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學習站官方技術圈!