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="xiaoming"
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']
['x', 'i', 'a', 'o', 'm', 'i', '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中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 方法,首先是從一行 切入的。如下 dicts list map lambda x x.to dict user 大家能看懂嗎?不難看出此行 最重要的map 方法的使用。那麼,接下來,我們來介紹map 方法。map 的原型是map function,iterable,它的返回結果是乙個列表...