高階函式與Python3幾個內建函式

2021-10-06 05:14:41 字數 3004 閱讀 3896

這篇文章簡談高階函式與python3中幾個內建函式的例題

高階函式就是能接受函式作引數的函式。

我們知道變數可以指向函式,而函式的引數可以接受變數,

乙個函式可以接收另乙個函式作為引數,

能接受函式作為引數的函式就是高階函式。

比如說,乙個簡單的高階函式:

def

shu_1()

:print

("宇宙之大"

)def

shu2

(x):

z=x(

)print

("個人之小"

)shu2(shu_1)

#引數為函式

內建函式與高階函式例題中的使用:

math.sqrt函式(內建數學模組中的函式)

題目:乙個使用數學模組中計算兩數平方根之和的函式:

import math

defadd

(x, y, f)

:return f(x)

+ f(y)

#x和y可以傳任意傳入,f我們則傳入乙個計算平方根的函式

print

(add(25,

25,math.sqrt)

)

map()函式

map() 會根據提供的函式對指定序列做對映。

用法:map(function, iterable, …)

function – 函式, iterable – 乙個或多個序列。

題目:沒有按照首字母大寫,後續字母小寫的規則,請利用map()函式,把乙個list(包含若干不規範的英文名字)變成乙個包含規範英文名字的list

def

format_name

(s):

return s.title(

)list

(map

(format_name,

['adam'

,'lisa'

,'bart'])

)

reduce函式

reduce函式也是乙個引數為函式,乙個為可迭代物件的高階函式,其返回值為乙個值而不是迭代器物件,故其常用與疊加、疊乘等。

題目:請利用recude()來求積:

輸入:[2, 4, 5, 7, 12]

輸出:245712的結果

from functools import

reduce

#在python3中reduce函式不再是內建函式,需要從functools模組匯入

defprod

(x, y)

:return x*y

print

(reduce

(prod,[2

,4,5

,7,12

]))

filter函式

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

例題:請利用filter()過濾出1~100中平方根是整數的數,即結果應該是:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

import math

defis_sqr

(x):

r=int(math.sqrt(x)

)#取整數用下一步計算判斷其平方是否等於原值

return r*r==x

list

(filter

(is_sqr,

range(1

,101))

)

sorted函式

sorted 語法:

sorted(iterable, key=none, reverse=false)

引數說明:

iterable – 可迭代物件。

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

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

sorted與sort不同之處有幾點:sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。

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

題目:對字串排序時,有時候忽略大小寫排序更符合習慣。請利用sorted()高階函式,實現忽略大小寫排序的演算法。

輸入:[『bob』, 『about』, 『zoo』, 『credit』]

輸出:[『about』, 『bob』, 『credit』, 『zoo』]

def

cmp_ignore_case

(s1, s2)

: x = s1.upper(

) y = s2.upper(

)if xreturn-1

if x>y:

return

1return

0print

(sorted([

'bob'

,'about'

,'zoo'

,'credit'

], key =

lambda x: x.upper())

)#注釋如下

- 對key =

lambda x: x的注釋:當待排序列表的元素由多字段構成時,我們可以通過sorted引數key來制定我們根據那個欄位對列表元素進行排序。

key=

lambda 元素: 元素[字段索引]

例如:想對元素第二個字段排序,則

key=

lambda x: x[1]

-->

python還有很多內建高階函式。我們先寫到這裡。

python3函式高階

1.命名空間和作用域 命名空間 載入內建命名空間 python直譯器自帶的變數和函式 開啟python直譯器自動載入內建命名空間 全域性命名空間 程式從頭到尾的自定義變數和函式 從頭到尾載入 區域性命名空間 函式內部的自定義變數和函式 內嵌函式 當函式被呼叫時,建立該函式的區域性命名空間,當函式執行...

Python3 高階函式

滿足其一即是 函式名作實參傳給函式 不修改被修飾函式源 的情況下為其新增功能 返回值含函式名 不修改函式呼叫方式 def add x,y,f return f x f y res add 3,6,abs print res 1 import time defsuspend time.sleep 3 ...

python3 函式 高階函式

函式本身也可以賦值給變數,即 變數可以指向函式 f abs print f 輸出 in function abs 對於abs 這個函式,完全可以把函式名abs看成變數,它指向乙個可以計算絕對值的函式。如果把abs指向其他物件 abs 10 print abs 10 輸出 traceback most...