Python之常用內建高階函式

2021-08-20 03:57:59 字數 2680 閱讀 1594

map函式

用於接收乙個函式及多個迭代物件,會根據提供的函式對指定序列做對映,然後返回乙個新的map物件

例1:需要乙個引數

a = 

map(lambda

x:x*x,[1,2

,3])

print(a)

輸出結果:

<

map object at 0x00fa73d0

>

此時a指向於map出的新物件,可以使用list(a)或for迴圈檢視,輸出結果為:

[1, 4

, 9]

函式執行過程:每次從列表中取乙個值,賦值給x,通過lambda的表示式之後,通過map新建乙個列表物件。

即:1*1 = 1    2*2 =4  3*3 =9

例2:需要多個引數

a = 

map(lambda

x,y:x+y,[1,2

,3],[4,5

,6])

print(list(a))

輸出結果:

[5, 7

, 9]

函式執行過程:每次從[1,2,3]列表中取乙個值賦值給x,同時從[4,5,6]列表中取乙個值賦值給y,並通過lambda表示式之後,通過map新建乙個列表物件。

即:1+4 = 5  2+5 =7  3+6 =9

例3:呼叫自定義函式

list1 = [0,1

,2,3

,4,5

,6]list2 = ['sun'

,'m'

,'t'

,'w'

,'t'

,'f'

,'s']

def

testmap(x,y

):return (x,

y)list3 =

map(testmap,list1,list2)

print(list(list3))

輸出結果:

[(0

, 'sun'), (1

, 'm'), (2

, 't'), (3

, 'w'), (4

, 't'), (5

, 'f'), (6

, 's')]

函式執行過程同上。

filter函式

用於過濾可迭代物件中不符合條件的元素,返回由符合條件元素組成的filter物件

filter(function or none,sequence) 

其中: function:接收乙個引數,返回布林值true或false

none: 則無需過濾,直接輸出

sequence: 可迭代物件,可以是str,tuple,list                

例1:

l1 = 

filter(lambda

x:x%

2,[1,2

,3,4])

print(list(l1))

輸出結果:

[1

, 3]

函式執行過程:每次從列表中取乙個值,賦值給x,通過lambda的表示式對2取餘,如余為0為false,非0為true。

即:[1,3]

例2:

l1 = 

filter(none

,"test")

print(list(l1))

輸出結果為:

['t'

, 'e'

, 's'

, 't']

函式執行過程:none代表著無需過濾,直接filter新物件

reduce函式

對引數序列中元素進行累積。注:使用時應先導入from funtools import reduce

例1:

from 

functools import

reduce

def

testreduce(x,y

):return x+

ya = reduce(testreduce,["aa"

,"bb"

,"cc"],

"dd")

print(a)

輸出結果:

ddaabbcc
函式執行過程:其中"dd"為初始值傳給testreduce中x, 每次從列表中取乙個值賦值給y,並把結果返回賦值給x。

例2:

from 

functools import

reduce

a = reduce(lambda

x ,y:x+y,[1,2

,3,4],

5)print(a)

輸出結果:

15
即:

5+1 = 6        6+2 = 8      8+3 = 11     11+4 = 5

例3:

from 

functools import

reduce

def

add(x,y

):return x+

ya = reduce(add,

range(0

,101))

print(a)

輸出結果:

5050

python 內建常用高階函式

一 函式式程式設計 1 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回 def add x return x x print map add,1,2,3 2 reduce 函式也是p...

python之常用內建函式

dir builtins add class contains delattr dir doc eq format ge getattribute getitem getnewarg,gt hash init iter le len lt mod mul ne new reduce reduce e...

python 內建高階函式

1.map abs i for i in 1,3,4,5 1 對於序列每個元素求絕對值 import random from functools import reduce print list map abs,1,3,4,5 2 對於序列每個元素求階乘 5 import random deffac...