當乙個函式 接收 另乙個函式作為引數, 它就是 高階函式
def
func
(a, x, y)
: a(x, y)
# a就是傳遞的 函式引數f, 執行 a 相當於 執行 f
deff
(x, y)
:print
(x + y)
func(f,1,
2)# 3, 在函式f執行過程中,輸出 3
map(func, iterable)
將可迭代物件中的每個值 按照 第乙個引數(函式)的 規則 依次 處理, 得到乙個 新的迭代器物件
def
func
(alist)
:def
sqr(x)
:return x * x
r =map(sqr, alist)
# r是迭代器物件
return
list
(r)# 將迭代器物件轉換為列表
r = func([11
,22,33
,44,55
])print
(r)
# 定義函式, 接收 列表 作為引數 , 返回乙個 包含 絕對值 的新列表
# abs():python內建函式,求乙個數的絕對值
deffunc
(alist)
:# map 高階函式需要的引數,不用管是內建的,還是自定義的
r =map(
abs, alist)
return
list
(r)r = func([-
12,34,
56,-98
])print
(r)# [12, 34, 56, 98]
reduce(func, iterable)
將可迭代物件中所有的元素,按照第乙個 函式的規則, 連續操作,得到乙個具體的資料
from functools import
reduce
# 自定義乙個mysum()函式,接收乙個列表作為引數, 返回列表中所有元素之和
defmysum
(alist)
:def
add(x, y)
:return x + y
r =reduce
(add, alist)
# reduce 的結果是乙個具體的值
return r
r = mysum([1
,2,3
,4,5
])print
(r)# 15
filter(func, iterable)
按照第乙個函式的返回值對可迭代物件中所有的資料進行過濾,得到乙個包含過濾後結果的迭代器物件
# 自定義乙個filternumber()函式,接收乙個列表作為引數, 返回乙個 包含偶數 的列表
deffilternumber
(alist)
:def
is_even
(x):
"""如果函式的返回結果為true, 對應的元素可以得到"""
if x %2==
0:return
true
r =filter
(is_even, alist)
# r也是迭代器物件
return
list
(r)# 通過型別轉換,將迭代器中資料取出
r = filternumber([1
,2,3
,4,5
,6])
print
(r)# [2, 4, 6]]
# 自定義乙個函式 sevennumber()函式,接收乙個列表作為引數, 返回乙個 包含 "逢7必過" 數字的新列表
defsevennumber
(alist)
:def
f(x)
:# 判斷為7的倍數,返回true
if x %7==
0or'7'in
str(x)
:return
true
r =filter
(f, alist)
# r是迭代器物件
return
list
(r)r = sevennumber(
range(1
,101))
print
(r)
sorted(iterable, key=func, reverse=false)
對列表進行排序,結果是乙個排序後的列表,預設公升序
alist =[21
,14,-
67,-34
,19]# 按照 數字大小 公升序 排序
r =sorted
(alist)
print
(r)# [-67, -34, 14, 19, 21]
# 按照 數字大小 降序 排序
r =sorted
(alist, reverse=
true
)print
(r)# [21, 19, 14, -34, -67]
# 按照每 個數字的絕對值 公升序 排序
r =sorted
(alist, key=
abs)
print
(r)# [14, 19, 21, -34, -67]
# 按照 每個數字的絕對值 降序 排序
r =sorted
(alist, key=
abs, reverse=
true
)print
(r)# [-67, -34, 21, 19, 14]
sort()列表的內建方法,不需要接收結果 python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...