久久国产乱子伦精品免费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. 主站蜘蛛池模板: 和顺县| 衡水市| 老河口市| 银川市| 青州市| 台中县| 赣榆县| 阿克苏市| 盐池县| 新兴县| 吉林省| 那坡县| 河西区| 衢州市| 贡觉县| 鄂伦春自治旗| 罗源县| 松潘县| 大竹县| 金沙县| 股票| 开阳县| 海伦市| 伊川县| 土默特右旗| 上蔡县| 江西省| 七台河市| 游戏| 义马市| 博湖县| 临颍县| 黔南| 铜陵市| 自治县| 枣阳市| 云林县| 丽江市| 普格县| 秭归县| 五莲县|