匿名函式(lambda運算式)
在Python中,函式可以算的上是“一等公民”了,我們先回顧下函式的優點:
- 減少代碼重復量
- 模塊化代碼
但是我們有沒有想過,如果我們需要一個函式,比較簡短,而且只需要使用一次(無需重復呼叫),那還需要定義一個有名字的函式么?
答案是否定的,這里我們就可以使用匿名函式來實作這樣的功能,
我們先看看求一個數的平方,我們定義個函式怎么寫:
def square(x):
return x**2
square(3)
而lambda運算式就可以這樣寫:
square = lambda x: x**2
square(3)
根據上面的例子,其實lambda運算式使用還是很簡單的,如下:
lambda argument1, argument2,.....: expression
接下來,介紹的map、filter和reduce函式,與lambda運算式結合使用,才能發揮其強大的作用了,
map函式
map函式的使用如下:
map(function, iterable)
其作用是,對iterable的每個元素,都運用function這個函式,最后回傳新的可遍歷的集合,
a = [1,2,3,4,5]
b = map(lambda x: x*2,a)
print(list(b))
# [2, 4, 6, 8, 10]
filter函式
filter函式的使用如下:
filter(function, iterable)
其作用是,對iterable的每個元素,都運用function這個函式進行判斷,最后回傳全部為True的新的可遍歷的集合,
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:857662006
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
a = [1,2,3,4,5,6]
b = filter(lambda x :x%2 ==0, a)
print(list(b))
# [2, 4, 6]
reduce函式
reduce函式的使用如下:
reduce(function, iterable)
function規定有兩個引數,表示對iterable每個元素和上一次運算的結果,進行function運算,最后得到一個值,這里要注意,我們需要從functools中匯入reduce,
from functools import reduce
a = [1,2,3,4]
b = reduce(lambda x,y: x*y,a)
print(b)
# 24 1*2*3*4
總結
- lambda運算式
- map、filter和reduce函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/460778.html
標籤:其他
