1. 程式人生 > >lambda, map,filter的詳解

lambda, map,filter的詳解

add=lambda x,y:x+y
print(add(1,2))
#3

用lambda編寫一個加法函式。

def add2(x):
  return x+2

map(add2,[1,2,3,4])

#[3,4,5,6]

map對list中的每個元素執行函式add2(),並且函式返回函式些該之後的list

map(lambda x:x+2,[1,2,3,4])
#[3,4,5,6]

用lambda重寫上述函式。

dict_a=[
{'name':'python','points':10},
{'name':'java','points':8}
]

map(lambda x:x['name'],dict_a)
#[python,java]
map(lambda x:x['points'],dict_a)
#[10,8]
map(lambda x:x['name']=='python',dict_a)
#[True,False]

map,是惰性迭代器,我們不能用index,len去訪問map,但是可以將map強制轉換為list,再去打印出結果;

list_a=[1,2,3]
list_b=[10,20,30]
map_ab=map(lambda x,y:x+y,list_a,list_b)
print(list(map_ab))

filter相當於過濾器,篩選出符合函式的元素,function會返回一個布林值。

a=[1,2,3,4,5,6,7,8]
filter(lambda x:x%2==0,a)

返回偶數

dict_a=[
        {'name':'python','points':10},
        {'name':'java','points':8}
        ]

a=filter(lambda x:x['name']=='python',dict_a)
print(list(a))

只保留name='python'的一列。