久久国产乱子伦精品免费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. 主站蜘蛛池模板: 辽阳县| 醴陵市| 金堂县| 延津县| 沧源| 宁晋县| 麦盖提县| 高尔夫| 固阳县| 陆良县| 义马市| 中超| 海口市| 靖宇县| 通江县| 乐亭县| 安福县| 乌什县| 乌兰浩特市| 荃湾区| 航空| 巴林左旗| 柘荣县| 汤原县| 平定县| 泾川县| 新密市| 公安县| 邵武市| 榆林市| 丹阳市| 海南省| 大安市| 呼图壁县| 宁国市| 凤阳县| 同江市| 涞水县| 商洛市| 神农架林区| 周至县|