久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

自學Python教程【第七十節】map 函數

歡迎大家來到自學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 表達式替代。可參考《【Python 第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中的相關內容,敬請關注 !

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

聲明:文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 昌宁县| 内乡县| 大方县| 荥经县| 安康市| 吉林省| 基隆市| 江安县| 灵宝市| 泊头市| 无为县| 桑日县| 桐城市| 玉环县| 城步| 浦县| 巴林右旗| 贵港市| 五莲县| 宜春市| 洱源县| 常山县| 社会| 怀远县| 揭西县| 天等县| 华亭县| 乐平市| 日照市| 胶南市| 江北区| 安塞县| 壤塘县| 平江县| 建湖县| 靖远县| 怀集县| 广西| 泰兴市| 湘阴县| 昌吉市|