Python map 函式介紹及用法

2022-06-11 03:09:10 字數 2249 閱讀 2253

python函式式程式設計之map()

python中map()、filter()、reduce()這三個都是應用於序列的內建函式。 

格式: 

1 map(func, seq1[, seq2,…])
第乙個引數接受乙個函式名,後面的引數接受乙個或多個可迭代的序列,返回的是乙個集合。 

python函式程式設計中的map()函式是將func作用於seq中的每乙個元素,並將所有的呼叫的結果作為乙個list返回。如果func為none,作用同zip()。

1、當seq只有乙個時,將函式func作用於這個seq的每個元素上,並得到乙個新的seq。 

讓我們來看一下只有乙個seq的時候,map()函式是如何工作的。 

從上圖可以看出,函式func函式會作用於seq中的每個元素,得到func(seq[n])組成的列表。下面舉得例子來幫助我們更好的理解這個工作過程。

#

使用lambda

使用列表解析

>>> print [x % 2 for x in range(7)]

[0, 1, 0, 1, 0, 1, 0]

乙個seq時,可以使用filter()函式代替,那什麼情況不能代替呢?

2、當seq多於乙個時,map可以並行(注意是並行)地對每個seq執行如下圖所示的過程: 

從圖可以看出,每個seq的同一位置的元素同時傳入乙個多元的func函式之後,得到乙個返回值,並將這個返回值存放在乙個列表中。下面我們看乙個有多個seq的例子:

>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])

[8, 16, 6]

如果上面我們不使用map函式,就只能使用for迴圈,依次對每個位置的元素呼叫該函式去執行。還可以使返回值是乙個元組。如:

>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])

[(8, 5), (16, 6), (6, 7)]

當func函式時none時,這就同zip()函式了,並且zip()開始取代這個了,目的是將多個列表相同位置的元素歸併到乙個元組。如:

>>> print map(none, [2,4,6],[3,2,1])

[(2, 3), (4, 2), (6, 1)]

需要注意的是: 

map無法處理seq長度不一致、對應位置運算元型別不一致的情況,這兩種情況都會報型別錯誤。如下圖: 

3、使用map()函式可以實現將其他型別的數轉換成list,但是這種轉換也是有型別限制的,具體什麼型別限制,在以後的學習中慢慢摸索吧。這裡給出幾個能轉換的例子:

***將元組轉換成list***

>>> map(int, (1,2,3))

[1, 2, 3]

***將字串轉換成list***

>>> map(int, '

1234')

[1, 2, 3, 4]

***提取字典的key,並將結果存放在乙個list中***

>>> map(int, )

[1, 2, 3]

***字串轉換成元組,並將結果以列表的形式返回***

>>> map(tuple, '

agdf')

[('a',), ('

g',), ('

d',), ('f'

,)]#

將小寫轉成大寫

defu_to_l (s):

return

s.upper()

print map(u_to_l,'

asdfd

')

**:

Python map及filter函式使用方法解析

知道python有這幾個內建方法,但一直以來用的都不多,最近重新看了一下,重新記錄一下。map 會根據提供的函式對指定序列進行對映,python3會返回乙個迭代器,具體用法如下 def double x return 2 x if name main print map double,1,2,3,4...

python map函式用法

1,第乙個引數接收乙個函式名,第二個引數接收乙個可迭代物件 list1 1,2,3 result map str,list1 print result 列印結果 1 2 3 2,如果第乙個引數傳入none,第二和第三個引數傳入兩個可迭代物件,那map 的功能同zip list1 1,2,3 list...

python map 函式用法

map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。例如,對於list 1,2,3,4,5,6,7,8,9 如果希望把list的每個元素都作平方,就可以用map 函式 因此...