python中map 函式的用法講解

2021-09-12 10:22:20 字數 1801 閱讀 5867

map函式的原型是map(function, iterable, …),它的返回結果是乙個列表。

引數function傳的是乙個函式名,可以是python內建的,也可以是自定義的。

引數iterable傳的是乙個可以迭代的物件,例如列表,元組,字串這樣的。

這個函式的意思就是將function應用於iterable的每乙個元素,結果以列表的形式返回。注意到沒有,iterable後面還有省略號,意思就是可以傳很多個iterable,如果有額外的iterable引數,並行的從這些引數中取元素,並呼叫function。如果乙個iterable引數比另外的iterable引數要短,將以none擴充套件該引數元素。還是看例子來理解吧!

a=(1,2,3,4,5)

b=[1,2,3,4,5]

c="zhangkang"

la=map(str,a)

lb=map(str,b)

lc=map(str,c)

print(la)

print(lb)

print(lc)

輸出:['1', '2', '3', '4', '5']

['1', '2', '3', '4', '5']

['z', 'h', 'a', 'n', 'g', 'k', 'a', 'n', 'g']

str()是python的內建函式,這個例子是把列表/元組/字串的每個元素變成了str型別,然後以列表的形式返回。當然我們也可以傳入自定義的函式,看下面的例子。

def

mul(x):

return x*x

n=[1,2,3,4,5]

res=map(mul,n)

輸出:[1, 4, 9, 16, 25]

把列表n中的每個元素執行一次mul函式後得到的結果作為最終結果列表的元素。再看下有多個iterable引數的情況。

def

add(x,y,z):

return x+y+z

list1=[1,2,3]

list2=[1,2,3]

list3=[1,2,3]

res=map(add,list1,list2,list3)

print(res)

輸出:[3, 6, 9]

並行的從三個列表中各自取出元素然後執行add函式,有人可能會問,如果三個列表長度不一樣怎麼辦,前面已經說了,對於短的那個iterable引數會用none填補。對於上面的例子,如果list3=[1,2]的話,那麼這個程式會報錯,因為雖然在執行add函式的時候列表list3的最後乙個元素會用none填補,但是none和int型別的數是不能相加的。也就是說,除非引數function支援none的運算,否則根本沒意義。現在我們看下另乙個例子你就明白了

def

add(x,y,z):

return x,y,z

list1 = [1,2,3]

list2 = [1,2,3,4]

list3 = [1,2,3,4,5]

res = map(add, list1, list2, list3)

print(res)

輸出:[(1, 1, 1), (2, 2, 2), (3, 3, 3), (none, 4, 4), (none, none, 5)]

posted @

2017-06-16 09:47

neu_張康 閱讀(

...)

編輯收藏

python中map()函式用法

map函式的原型是map function,iterable,它的返回結果是乙個列表。引數function傳的是乙個函式名,可以是python內建的,也可以是自定義的。引數iterable傳的是乙個可以迭代的物件,例如列表,元組,字串這樣的。這個函式的意思就是將function應用於iterable...

python中map()函式的用法

map函式的功能是將給定的列表做乙個對映 map function,list1 function是一具用某種功能的函式 list是給定的列表 舉例說明 例1def double x return x 2list 1,2,3,4 list1 map double,list print list1 執行...

python中map函式的用法

map函式的原型是map function,iterable,它的返回結果是乙個列表。引數function傳的是乙個函式名,可以是python內建的,也可以是自定義的。引數iterable傳的是乙個可以迭代的物件,例如列表,元組,字串這樣的。這個函式的意思就是將function應用於iterable...