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不改...