浙江11选5计划软件下载:自學Python教程【第七十節】map 函數

浙江11选5任3遗漏 www.ehxis.com 歡迎大家來到自學Python教程教室,上一講我們學習Python的另外一個知識點Python中變量的作用域的相關知識,這節課我們來了解Python中map 函數的相關內容,來看看吧:

來看兩個問題:

1. 假設有一個數列,如何把其中每一個元素都翻倍?

2. 假設有兩個數列,如何求和?

第一個問題,普通程序員大概會這么寫:

lst_1 = [1,2,3,4,5,6]

lst_2 = []

for item in lst_1:

lst_2.append(item * 2)

print lst_2

Python 程序員大概會這么寫:

lst_1 = [1,2,3,4,5,6]

lst_2 = [i * 2 for i in lst_1]

print lst_2

這是我在《【Python 第64課】列表綜合》里說到的方法。

今天來說另一種 Python 程序員常用的寫法 — map:

lst_1 = [1,2,3,4,5,6]

def double_func(x):

return x * 2

lst_2 = map(double_func, lst_1)

print lst_2

map 是 Python 自帶的內置函數,它的作用是把一個函數應用在一個(或多個)序列上,把列表中的每一項作為函數輸入進行計算,再把計算的結果以列表的形式返回。

map 的第一個參數是一個函數,之后的參數是序列,可以是 list、tuple。

所以剛剛那個問題也可以寫成:

lst_1 = (1,2,3,4,5,6)

lst_2 = map(lambda x: x * 2, lst_1)

print lst_2

這里原數據改為了元組,函數用 lambda 表達式替代??剎慰肌丁綪ython 第70課】lambda 表達式》,微信中回復 70。

map 中的函數可以對多個序列進行操作。最開始提出的第二個問題,除了通常的 for 循環寫法,如果用列表綜合的方法比較難實現,但用 map 就比較方便:

lst_1 = [1,2,3,4,5,6]

lst_2 = [1,3,5,7,9,11]

lst_3 = map(lambda x, y: x + y, lst_1, lst_2)

print lst_3

map 中的函數會從對應的列表中依次取出元素,作為參數使用,同樣將結果以列表的形式返回。所以要注意的是,函數的參數個數要與 map 中提供的序列組數相同,即函數有幾個參數,就得有幾組數據。

對于每組數據中的元素個數,如果有某組數據少于其他組,map 會以 None 來補全這組參數。

此外,當 map 中的函數為 None 時,結果將會直接返回參數組成的列表。如果只有一組序列,會返回元素相同的列表,如果有多組數列,將會返回每組數列中,對應元素構成的元組所組成的列表。聽上去很繞口是不是……代碼試試看就明白了:

lst_1 = [1,2,3,4,5,6]

lst_2 = [1,3,5,7,9,11]

lst_3 = map(None, lst_1)

print lst_3

lst_4 = map(None, lst_1, lst_2)

print lst_4

恭喜您在Python自學的道路上又堅持了一天,今天我們學習了Python中map 函數的相關內容,下節課我們將分享更多Python中的相關內容,敬請關注 !

好啦,今天的分享到這里就結束了,希望大家能夠持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code