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 中刪除偶數,保留...