Python函式式程式設計 內建函式map 使用說明

2021-09-07 06:26:16 字數 2413 閱讀 2095

一、概述

map操作是函式式程式設計中的重要技術之一,其作用就是對乙個集合中的每個元素做處理,生成乙個新的元素,由這些新的元素組成乙個新的集合的返回。

所以map操作後,產生的新集合的元素個數和原集合的元素個數相同,但裡面的元素值不一樣,元素值對應的型別也可以和原來的不一樣。

python通過內建的map函式也很好的支援了map操作。

map函式的語法格式為:map(function, iterable, ...

)二、案例

1、對集合iterable中的每乙個元素應用『function』方法,返回乙個新的元素,如:

>>> def

double(a):

...

return a*2...

>>> map(double,range(5))

[0, 2, 4, 6, 8]

上面**先定義了乙個double函式,傳遞給map,range(5)返回乙個列表[0,1,2,3,4],經map處理後,返回乙個新的列表。

>>> arr = ['

mary

', '

had', '

a', '

little

', '

lamb']

>>> def

strlen(a):

...

return

len(a)

...>>>map(strlen,arr)

[5, 3, 1, 7, 4]

上面**定義了乙個strlen方法,用於計算字串的長度。傳給map後,返回乙個列表,可以看出列表中的元素型別和原列表不一樣。但兩個列表的長度是一樣的。

2、如果給出了多個集合引數,則要求function也必須帶多個引數,如:

>>> def

fun(a,b):

...

return a*100+b

...>>> map(fun,[1,2],[3,4])

[103, 204]

可以看出,是會平行的取每個集合中的元素來處理。

注意,如果某個集合的元素個數少於其它的集合的元素個數,則不足的會被擴充為none,但是否會出問題取決於fun中的運算方式。

3、如果function為none,對於單個集合返回乙個同樣的,但對於多個集合,返回乙個集合(集合中每個元素為元組)。如:

>>> arr = [1,2,3]

>>> newarr =map(none,arr)

>>> print

arr[1, 2, 3]

>>> print

newarr

[1, 2, 3]

>>> del

newarr[:]

>>> print

newarr

>>> print

arr[1, 2, 3]

從上面**可以看出,即使是返回同樣的集合,map操作返回的是乙個新的集合。

>>> map(none,[1,2,3],['

a','b'

])[(1, '

a'), (2, '

b'), (3, none)]

從上面**可以看出,返回的集合中元素是元組,長度不足的集合的元素以none替代。

三、lambda 表示式在map函式中的使用

的場合下使用,也就是指匿名函式。如:

>>> map(lambda x:pow(x,2),[1,2,3])

[1, 4, 9]

上面的lambda x : pow(x,2)  定義了乙個函式,相當於

def

fun(x):

return pow(x,2)

上面的map操作就等同  map(fun,[1,2,3] )

但使用lambda的好處是,省去了函式定義,這個場景還是很常見的,有很多時候,只需要能完成某個處理的函式,但具體名字無所謂,這時lambda就有用場了。這還避免了命名空間的汙染,因為多個名字,就多了一分衝突的的可能。

再看乙個有多個集合引數的例子

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

[5, 7, 9]

四、總結

使用map函式,可以讓我們編寫**時把精力集中中如何轉換元素上,不用關心集合的邊界,不用關心新集合的建立等。這正是函式式程式設計的優勢和典型特點所在。

下面通過例子來說明

Python 函式式程式設計 高階函式及內建函式

1 函式名可以當做引數傳遞 2 返回值可以是函式名 尾呼叫由於是函式的最後一步操作,不需要保留外層函式的呼叫記錄,因為呼叫位置 內部變數等資訊不會再用到了,只需要直接用內層函式的呼叫記錄,取代外層函式的呼叫記錄就可以了。滿足以下兩個特性的任意乙個即為高階函式 1 函式的傳入引數是乙個函式名 2 函式...

python內建函式 程式設計)

10.輸入10個數,將列表中元素逆置後輸出 l 1,2,3,4,5,6,7,8,9,10 1 2 3 從右到左讀取 不改變原先集合順序 1 10 2 9 3 8 交換元素 改變原先集合順序 reverse i 1 while i 10 print l i end i 1 print print l ...

Python的函式式程式設計與內建函式10 函式總結

l 1 2,3 4,5 列表中的元素轉成字串模式 4.檔案處理 r w 都是讀寫模式,a 是追加方式讀寫 檔名 檔案的絕對路徑 f open test.py a encoding utf8 f.write n 這是a模式的內容 n f open test.py a encoding utf8 dat...