首頁 >後端開發 >Python教學 >python中map是什麼意思

python中map是什麼意思

藏色散人
藏色散人原創
2019-07-01 09:27:2030521瀏覽

python中map是什麼意思

python中map是什麼意思?

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)]

相關推薦:《Python教學

以上是python中map是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn