L11 Python中的高階函式的使用

2021-09-29 15:41:31 字數 2262 閱讀 6689

python中的函式是乙個物件,既可以作為輸入引數,也可以作為返回結果。在這裡聊聊幾個常用的高階函式,來看看函式是如何被作為輸入引數/返回結果來使用的。

語法:map(function,iterator)

function指函式名稱,iterator指乙個可迭代物件如列表。

用途:遍歷iterator中的每乙個元素,執行函式function

# 直接使用lambda 臨時函式

items=[1

,3,9

,10]list

(map

(lambda x:x+

1, items)

)# 先定義函式,再傳入函式名

defplus1

(x):

x +=

1return x

# 注:這裡是 plus1 而不是 plus1()

list

(map

(plus1, items)

)

用途:reduce() 函式會對引數序列中元素進行累積。

執行過程:

函式將乙個資料集合(鍊錶,元組等)中的所有資料進行下列操作:

用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果

def

sumtotal

(x,y)

:return x + y

from functools import

reduce

# print

(reduce

(sumtotal,items)

)# 直接傳入lambda函式

print

(reduce

(lambda x,y:x+y,items)

)

用途: 用來過濾序列

呼叫方式:

filter(函式名,物件名)把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素

返回值:

是乙個iterator,也就是乙個惰性序列,所以要強迫filter()完成計算結果,需要用list()函式獲得所有結果並返回list

def

is_odd

(n):

return n %2==

1# 檢視返回型別,是乙個filter物件

type

(filter

(is_odd,[1

,3,4

,9])

)# # 用list()輸出

list

(filter

(is_odd,[1

,2,4

,5,6

,9,10

,15])

)#%% 去掉序列中的空字串

defnot_empty

(s):

return s and s.strip(

)list

(filter

(not_empty,

['a',''

,'b'

,none

,'c'

,' '])

)

既可以使用預設的公升序,也可以通過傳入函式來實現自定義排序

# 預設按公升序

print

(sorted([

36,5,

-12,9

,-21]

))# [-21, -12, 5, 9, 36]

# 傳入函式,按絕對值公升序

print

(sorted([

36,5,

-12,9

,-21]

, key=

abs)

)# [5, 9, -12, -21, 36]

# 忽略大小寫

print

(sorted([

'bob'

,'about'

,'zoo'

,'credit'

], key=

str.lower)

)#%% 反向排序

print

(sorted([

'bob'

,'about'

,'zoo'

,'credit'

], key=

str.lower, reverse=

true

))

python高階函式 11

在乙個函式內呼叫本身 def new num if num 1or num 2 return 1else return new num 1 new num 2 print new 10 格式 lambda para1,para2,paran expression using paras f lamb...

python中的高階函式

高階函式 能接收函式作為引數的函式。一 map f,list python內建的乙個高階函式,需要乙個函式和乙個list作為引數,傳進來的函式會一一作用於list中的每個元素,然後返回乙個新的list。二 reduce f,list python內建的乙個高階函式,同樣,需要乙個函式和list作為引...

Python 中的高階函式

python中的高階函式和其他語言一樣分別有以下幾個 map fn,list 對映 filter fn,list 過濾只返回滿足條件的元素sorted list,key 序列排序reduce fn,list 兩兩對折,返回乙個唯一數值 這幾位在語法結構和引數的先後順序上會同其他語言有所不同,但是在意...