map函式 filter函式 reduce函式

2021-09-01 15:01:13 字數 4564 閱讀 3226

map函式

map函式的結構為 map(處理方法,可迭代物件) ,相當於for迴圈遍歷可迭代物件中的每乙個元素,對每乙個元素做指定操作,得到乙個和原始資料順序相同的迭代器。(在python3中最終得到的結果是乙個迭代器,可以用list()函式轉化為列表,在python2中map函式的結果就是乙個列表。)

map函式例項

原始方法:

def

map_test

(array)

: ret =

for i in array:

res = i -

1return ret

print

(map_test(l)

)

採用下面這種方法較第一種方法更靈活,批量修改時只需要修改被呼叫函式即可。

l =[1

,2,10

,11]def

reduce_one

(x):

return x -

1def

map_test

(func, array)

: ret =

for i in array:

res = func(i)

return ret

print

(map_test(reduce_one, l)

)

採用匿名函式的方式會在靈活的基礎上更加簡潔:

l =[1

,2,10

,11]def

map_test

(func, array)

: ret =

for i in array:

)return ret

print

(map_test(

lambda x: x -

1, l)

)

以map函式形式:

注意map函式返回的結果是乙個迭代器

l =[1

,2,10

,11]res =

map(

lambda x: x -

1, l)

print

(list

(res)

)

filter函式

filter函式的結構為 filer(結果為布林值的函式,可迭代物件),相當於for迴圈遍歷可迭代物件中的每個元素,對每個元素進行指定判斷,如果結果為true則保留該元素,所得結果為乙個迭代器。

filter函式例項

原始方法:

movie_people =

["alucky"

,"aalex"

,"adog"

,"mb"

,"adsa"

,"yy"

]def

filter_test

(array)

: res =

for i in array:

ifnot i.startswith(

"a")

:return res

print

(filter_test(movie_people)

)

較為靈活的方法:

def

remove_a

(x):

return x.startswith(

"a")

deffilter_test

(func, array)

: ret =

for i in array:

ifnot func(i)

:return ret

movie_people =

["alucky"

,"aalex"

,"adog"

,"mb"

,"adsa"

,"yy"

]print

(filter_test(remove_a, movie_people)

)

匿名函式寫法:

def

filter_test

(func, array)

: ret =

for i in array:

ifnot func(i)

:return ret

movie_people =

["alucky"

,"aalex"

,"adog"

,"mb"

,"adsa"

,"yy"

]print

(filter_test(

lambda x: x.startswith(

"a")

, movie_people)

)

filter函式寫法:

movie_people =

["alucky"

,"aalex"

,"adog"

,"mb"

,"adsa"

,"yy"

]res =

filter

(lambda x:

not x.startswith(

"a")

, movie_people)

print

(list

(res)

)

reduce函式

reduce函式結構為 reduce(函式,可迭代物件,初始值),相當於for遍歷可迭代物件中的每乙個元素,將所有元素和初始值按照指定函式的操作執行,最終返回乙個值。在python3中reduce函式中呼叫reduce函式必須先導入模組,即以from functools import reduce開頭。

reduce函式例項

原始方法:

def

reduce_test

(array, init=

none):

if init ==

none

: res = array.pop(0)

for i in array:

res *= i

return res

else

: res = init

for i in array:

res *= i

return

(res)

l =[1,

2,3,

100]

print

(reduce_test(l)

)

較靈活的方法:

def

multi

(x, y)

:return

(x * y)

defreduce_test

(func, array, init=

none):

if init ==

none

: res = array.pop(0)

for i in array:

res = func(res, i)

else

: res = init

for i in array:

res *= func(res, i)

return res

l =[1,

2,3,

100]

print

(reduce_test(multi, l)

)

匿名函式的寫法:

def

reduce_test

(func, array, init=

none):

if init ==

none

: res = array.pop(0)

for i in array:

res = func(res, i)

else

: res = init

for i in array:

res = func(res, i)

return res

l =[1,

2,3,

100]

print

(reduce_test(

lambda x, y: x * y, l)

)

reduce函式:

注意必須先導入模組

l =[1

,2,3

,100

]from functools import

reduce

res =

reduce

(lambda x, y: x * y, l)

print

(res)

map函式filter函式

一,自定義filter函式 或者 將程式更靈活 繼續優化程式,使用匿名函式 將第乙個定義的函式刪掉用匿名函式替代,如下 res filter test lambda n n.startswith sb movie people print res 二,使用內建的filter函式 此時列印的filte...

內建函式 filter和map

filter filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如,要從乙個list 1,4,6,7,9,12,17 中刪除偶數,保留...

內建函式 filter和map

filter filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如,要從乙個list 1,4,6,7,9,12,17 中刪除偶數,保留...