python中的map 函式詳解

2021-08-18 07:45:34 字數 3070 閱讀 5559

map()

函式是python

中的乙個重要函式,在

python

函式的一些相關用法,希望對初

學python的同學有所幫助。

先來看一下官方文件:

map(

function, iterable, ...)

function

to every item 

of iterable 

andreturn a list 

of the results. 

if additional iterable arguments are passed, 

function must 

take that many arguments 

andto the items 

from all iterables 

in parallel. 

if one iterable 

is shorter than another it 

is assumed 

to be extended withnoneitems. 

iffunction isnone, the identity 

function

is assumed; 

if there are multiple arguments, map() returns a list consisting 

of tuples containing the corresponding items 

from all iterables (a kind 

of transpose operation). the iterable arguments may be a sequence 

or any iterable object; the result 

is always a list.

1. 對可迭代函式

'iterable'

中的每乙個元素應用

『function』

方法,將結果作為

list

返回。例:

例1 :

>>> 

defadd(x):

...    

return x+1

...>>> aa = [11,22,33]

>>> map(add,aa)

[12, 23, 34]

如文件中所說,map

函式將add方法對映到

aa中的每乙個元素,即對

aa中的每個元素呼叫

add方法,並返回結果的

list

。需要注意的是

map函式可以多個可迭代引數,前提是

function

方法能夠接收這些引數。否則將報錯。例子如下:

如果給出多個可迭代引數,則對每個可迭代引數中的元素『

平行』的應用『function』

。即在每個

list

中,取出下標相同的元素,執行

abc()。例2

:>>> 

defabc(a, b, c):

...    

return a*10000 + b*100 + c

...>>> list1 = [11,22,33]

>>> list2 = [44,55,66]

>>> list3 = [77,88,99]

>>> map(abc,list1,list2,list3)

[114477, 225588, 336699]

>>> a = map(ord,'abcd')

>>> list(a)

[97, 98, 99, 100]

>>> a = map(ord,'abcd','efg') # 

傳入兩個可迭代物件,所以傳入的函式必須能接收

2個引數,

ord不能接收

2個引數,所以報錯

>>> list(a)

traceback (most recent call last):

file "", line 1, 

inlist(a)

typeerror: ord() takes exactly one argument (2 given)

>>> 

deff(a,b):

return a + b

當傳入多個可迭代物件時,且它們元素長度不一致時,生成的迭代器只到最短長度。

>>> a = map(f,'abcd','efg') # 

選取最短長度為

3>>> list(a)

['ae', 'bf', 'cg']

2. 如果

'function'

給出的是

『none』

,則會自動呼叫乙個預設函式,請看例子:

例3 :

>>> list1 = [11,22,33]

>>> map(none,list1)

[11, 22, 33]

>>> list1 = [11,22,33]

>>> list2 = [44,55,66]

>>> list3 = [77,88,99]

>>> map(none,list1,list2,list3)

[(11, 44, 77), (22, 55, 88), (33, 66, 99)]

3. 最後一點需要注意的是,

map()

在python3

和python2

中的差異(特別是從

py2轉到

py3的使用者很可能遇到):

在python2

中,map

會直接返回結果,例如:

map(lambda x: x, [1,2,3])

可以直接返回

[1,2,3]

但是在python3

中, 返回的就是乙個

map物件

:如果要得到結果,必須用list

作用於這個

map物件。

最重要的是,如果不在map

前加上list

,lambda

函式根本就不會執行

python中的map 函式

python中的map 函式應用於每乙個可迭代的項,返回的是乙個結果list。map 接受兩個引數,乙個是函式,乙個是序列。例項 map function,iterable,l 1,2,3,4 defpow2 x return x x list map pow2,l 執行結果 1,4,9,16 de...

python中的map函式

map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。例如,對於list 1,2,3,4,5,6,7,8,9 如果希望把list的每個元素都作平方,就可以用map 函式 因此...

python中的map函式

map是python內建函式,會根據提供的函式對指定的序列做對映。map 函式的格式是 map function,iterable,第乙個引數接受乙個函式名,後面的引數接受乙個或多個可迭代的序列,返回的是乙個集合。把函式依次作用在list中的每乙個元素上,得到乙個新的list並返回。注意,map不改...