1. 程式人生 > >Python程式設計學習10:lambda表示式和filter,map函式的使用

Python程式設計學習10:lambda表示式和filter,map函式的使用

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 方法

:篩選出值為True的元素

    如下例,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]