map()是 python 內建的高階函式,它接收乙個函式 func 和乙個 list,並通過把函式 func依次作用在 list 的每個元素上,得到乙個新的 list 並返回。
當list只有乙個時,將函式func作用於這個list的每個元素上,並返回乙個map物件。
def
func
(x):
return x**2
print(map(func, [1,2,3,4,5]))
for x in map(func, [1,2,3,4,5])):
print(x)
輸出
< map object at 0x0000029c8fd08940 >
1 4
9 16
25另乙個應用案例:將字串列表中每個字母的首字母變為大寫,其餘
def
func
(str):
stmp = str[0:1].upper() + str[1:].lower()
return stmp
lst = ['awm', 'akm', 'kar', 'groza']
print(list(map(func, lst)))
輸出結果:
['awm', 'akm', 'kar', 'groza']
當存在多個list物件時,map並行地處理傳入的list,呼叫滿足下圖規則:
def
func
(x,y,z):
result1 = x**y**z
result2 = x*y*z
return (result1, result2)
print(list(map(func, [1,2,3],[1,1,1],[3,2,1])))
輸出結果:
>>> [(1, 3), (2, 4), (3, 3)]
一些需要注意的細節在python3中map可以處理長度不同的list(但是列表成員型別必須相同),他會將所有列表截斷為最小長度
for i in map(lambda x,y:(x**y,x+y),[1,2,3,4,5,6],[1,2]):
print(i)
輸出結果:
>>> (1, 2)
(4, 4)
一些特殊用法1、用作型別轉換
for x in map(int, '1234'):
print(x)
輸出結果:
>>> 12
34
2、用作zip函式
如果函式是 none,自動假定乙個『identity』函式,這時候就是模仿 zip()
在python2.x中有
print
map(none, [1,2,3],[3,2,1])
執行結果:
>>> [(1, 3), (2, 2), (3, 1)]
但是在 python3中,返回是乙個迭代器,所以它其實是不可呼叫 python 內建函式map
map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。下圖可以說明 對應下面的 def f x return x x print map f,1,2,3,4,5,6,7,8,...
python 內建函式map
map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。下圖可以說明 對應下面的 def f x return x x print map f,1,2,3,4,5,6,7,8,...
python 內建函式map
map 依據提供的函式,對指定序列做對映。語法 map function,list1 list2 功能 map 接受乙個函式function,以及乙個或多個list,以引數序列list中的每乙個元素呼叫 function 函式,返回function返回值的新列表。注意 map 函式的返回值需要強制轉...