1. 程式人生 > >學渣學python之map函式

學渣學python之map函式

map()函式是Python內建的高階函式,它接收一個函式f和一個list,並把函式f作用在list的每個元素上。從而得到一個f處理過的新的list返回。下面舉個栗子:

1. 例1

list [1, 2, 3, 4, 5, 6, 7]

我們要得到list的每個元素都平方後的,新的list,怎麼做呢?當然,這兒就會用到map()這個函數了。

沒錯,我們需要先定義一個f函式(用來給每個元素平方的):

def f(x):
    return x*x

然後map()函式:

print( list(map(f, [1, 2, 3, 4, 5, 6, 7])))

輸出結果肯定就是[1,4,9,16,25,36,47]

需要注意的是,這裡返回的list已經是一個新的list了,原有的list [1, 2, 3, 4, 5, 6, 7]還是原來的,沒有改變。

2.list裡面的元素是任意型別的情況

list裡面的資料型別是任意型別的map()函式也是支援的,只需要我們定義的處理函式相容這些資料型別就可以。例如有個列表元素是一組英文單詞,現在有些單詞沒有嚴格按照大小寫規則來書寫。我們可以通過函式來把它糾正正確。

['adam', 'LISA', 'barT']

首先我們先定義一個處理函式

def format_name(s):
    s1=s[0:1].upper()+s[1:].lower();
    return s1;
print (list(map(format_name, ['adam', 'LISA', 'barT'])))

輸出的結果是:['Adam', 'Lisa', 'Bart']

2.map()函式和lambda的共同使用

上面的程式碼我們就可以寫成

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

注意:在Python 3.x中map返回的是一個iterator所以要轉list一下才可以