python中5個常用的內建高階函式

2021-09-29 20:48:26 字數 4140 閱讀 7232

python內建常用高階函式:

一、函式式程式設計

1、map()函式

是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,

並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回

def

add(x)

:return x+x

print

(map

(add,[1

,2,3

]))# out:

print

(list

(map

(add,[1

,2,3

])))

# out:[2, 4, 6]

2、reduce()函式

reduce()函式也是python內建的乙個高階函式。

reduce()函式接收的引數和 map()類似,乙個函式 f,乙個list,但行為和 map()不同,reduce()傳入的函式f必須接收兩個引數,

reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。

在 python3 中,reduce() 函式已經被從全域性名字空間裡移除了,它現在被放置在 functools 模組裡,如果想要使用它,

則需要通過引入 functools 模組來呼叫 reduce() 函式:

'''

'''from functools import

reduce

defprod

(x, y)

:return x*y

print

(reduce

(prod,[2

,4,5

,7,12

]))# out:3360 # 2*4*5*7*12

# reduce()還可以接收第3個可選引數,作為計算的初始值。如果把初始值設為100

print

(reduce

(prod,[2

,4,5

,7,12

],100)

)# out:336000 # 2*4*5*7*12*100

3、filter()函式

是 python 內建的另乙個有用的高階函式,filter()函式接收乙個函式 f 和乙個list,

這個函式f的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,

返回由符合條件元素組成的新list。

import math

defis_sqr

(x):

return math.sqrt(x)

==int

(math.sqrt(x)

)print

(list

(filter

(is_sqr,

range(1

,101))

))# out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4、sorted() 函式

對所有可迭代的物件進行排序操作。

sort 與 sorted 區別:

sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。

list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作。

sorted

(iterable, key=

none

, reverse=

false

)

iterable – 可迭代物件。

key – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。

reverse – 排序規則,reverse = true 降序 , reverse = false 公升序(預設)。

返回重新排序的列表

'''

'''print

(sorted([

5,2,

3,1,

4]))

# out:[1, 2, 3, 4, 5]

print

(sorted()

)# out:[1, 2, 3, 4, 5]

利用key進行倒序排序

example_list =[5

,0,6

,1,2

,7,3

,4]result_list =

sorted

(example_list, key=

lambda x: x*-1

)print

(result_list)

要進行反向排序,也可以通過傳入第三個引數 reverse=true:

example_list =[5

,0,6

,1,2

,7,3

,4]print

(sorted

(example_list, reverse=

true))

# out:[7, 6, 5, 4, 3, 2, 1, 0]

5、python的函式不但可以返回int、str、list、dict等資料型別,還可以返回函式!

請注意區分返回函式和返回值:

def

my_abs()

:return

abs# 返回函式,返回函式可以把一些計算延遲

defmy_abs2

(x):

return

abs(x)

# 返回函式呼叫的結果,返回值是乙個數值

def

calc_prod

(lst)

:def

lazy_prod()

: prod =

1for i in lst:

prod = prod*i

return prod

return lazy_prod

f = calc_prod([1

,2,3

,4])

print

(f()

)# out:24

5.1、為什麼定義lazy_prod()函式和返回函式cal_prod()?

python支援返回函式的基本語法

'''

'''deff(

):print

('call f()...'

)# 定義函式g:

defg()

:print

('call g()...'

)# 返回函式g:

return g

只返回函式的作用:

返回函式可以把一些計算延遲執行。例如,如果定義乙個普通的求和函式:

def

calc_sum

(lst)

:return

sum(lst)

print

(calc_sum([1

,2,3

,4])

)# out:10

defcalc_sum

(lst)

:def

lazy_sum()

:return

sum(lst)

return lazy_sum

f = calc_sum([1

,2,3

,4])

print

(f)# **並沒有對函式進行執行計算出結果,而是返回函式,所以列印出來的是型別

#out: .lazy_sum at 0x000001ff43462e18>

print

(f()

)# 對返回的函式進行呼叫時,才計算出結果

# out:10

python中的常用內建屬性與內建函式

常用專有屬性常用專有屬性 說明觸發方式 init 構造初始化函式 建立例項後,賦值時使用,在 new 後 new 生成例項所需屬性 建立例項時 class 例項所在的類 例項.class str 例項字串表示,可讀性 print 類例項 如沒實現,使用repr結果 repr 例項字串表示,準確性 類...

python中內建函式 python常用內建函式

1.map函式 對指定序列對映到指定函式,返回結果集 a 1,3,5 b 2,4,6 def mf x,y return x y map none,a,b 1,2 3,4 5,6 map mf,a,b 2,12,30 list map lambda x,y x y,1,2,3 4,5,6 5,7,9...

Python 中的常用內建函式 基礎篇

思維導圖 1 再談生成器 生成器本質是迭代器 獲取生成器的方法 生成器函式,生成器表示式,通過資料轉化 生成器函式,函式內部有yield,執行這個函式獲取的是生成器 next 可以觸發生成器的執行,執行到下乙個yield 特點 惰性機制,只能向前執行,節省記憶體 2 再談推導式 沒有元組推導式,元組...