Python程式設計學習10:lambda表示式和filter,map函式的使用
阿新 • • 發佈:2019-02-13
1. lambda 表示式
(1) 優點:
a. 在寫一些簡單函式時,可以省下定義函式的過程,使得程式碼更加精簡 ,同時也簡化了程式碼的可讀性
b. 對於一些比較抽象並且只需要呼叫一兩次的函式,有時候給函式取名字也比較頭疼,使用lambda就不用給函式命名了
(2) 例項: lambda表示式返回一個函式,如下例,冒號前的x,y是要接收的兩個引數,冒號後的表示式x+y是函式要執行的操 作,並返回該操作的結果。
func = lambda x,y : x+y
print(func(3,5))
8
2. filter 方法
如下例,filter接受兩個引數,第一個引數None預設表示篩選前不對列表中的資料做操作,第二個列表引數表示要篩選的物件
filter(None,[1,-1,2,0,True,False])
<filter at 0x26485a09588>
list(filter(None,[1,-1,2,0,True,False]))
[1, -1, 2, True]
將isOdd函式作為引數傳入filter,表示先將列表中的每個元素執行isOdd函式操作,篩選處返回值為True的元素。
def isOdd(x): return x % 2 list(filter(isOdd,[1,-1,2,0,True,False])) [1, -1, True]
list(filter(lambda x : x%2,range(10)))
[1, 3, 5, 7, 9]
3. map 方法
map方法接收兩個引數, func函式表示要進行的操作,iter1為可迭代物件。map(func, iter1)方法可以對每個iter1中的每個應用func進行操作,並返回值。
map(lambda x:x%2,range(10)) <map at 0x26485a2cb00> list(map(lambda x:x%2,range(10))) [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] list(map(lambda x:x*2,range(10))) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]