將函式作為引數傳入,這樣的函式就叫做高階函式。通俗點說,就是乙個函式可以作為另乙個函式的引數和返回值map()高階函式
接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。
假設使用者輸入的英文名字不規範,沒有按照首字母大寫,後續字母小寫的規則,請利用map()函式,把乙個list(包含若干不規範的英文名字)變成乙個包含規範英文名字的list:輸入:[『adam』, 『lisa』, 『bart』]
輸出:[『adam』, 『lisa』, 『bart』]
def
format_name
(s):
return s.capitalize(
)# return str.title(s)亦可
list
=map
(format_name,
['adam'
,'lisa'
,'bart'])
print
(list
)
reduce()高階函式
reduce()函式接收的引數和 map()類似,乙個函式 f,乙個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。
python內建了求和函式sum(),但沒有求積的函式,請利用recude()來求積:輸入:[2, 4, 5, 7, 12]
輸出:245712的結果
from functools import
reduce
deff
(x,y)
:return x*y
print
(reduce
(f,[2,
4,5,
7,12]
))#輸出 3360
filter()高階函式
filter()函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。filter函式關鍵是在於篩選、過濾。
def
is_odd
(n):
return n%2==
1list1=
list
(filter
(is_odd,[1
,2,3
,4,5
,6,7
,8])
)print
(list1)
#輸出[1, 3, 5, 7]
sorted()高階函式
sorted()可以直接用於排序,也可以接受key函式
#直接用於排序
list1=
sorted([
1,5,
6,2,
4,9,
12])print
(list1)
#字元排序
list2=
sorted([
'china'
,'japan'
,'french'
,'english'])
print
(list2)
#輸出#[1, 2, 4, 5, 6, 9, 12]
#['china', 'english', 'french', 'japan']
#用key接受函式
list
=sorted([
25,15,
-2,12
,-21,
-9], key=
abs)
print
(list
)#輸出[-2, -9, 12, 15, -21, 25]
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
Python 內建高階函式總結
接收兩個引數,乙個是函式 乙個是序列 map 將傳入的函式依次作用到序列的每個元素,並且把結果作為新的序列返回 import random 對乙個序列 1,3,4,5 的每乙個元素求絕對值 print list map abs,1,3 4,5 對每個元素求階乘 deff x 對x求階乘 res 1f...