您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何分析python的map、reduce函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
小編講的是Python的map、reduce兩大函數。
這對兄弟是出現頻率極高且相當實用的python函數,初學者會較難理解,看完本文你就能搞定它們嘍!
map
map()方法會將 一個函數 映射到序列的每一個元素上,生成新序列,包含所有函數返回值。
也就是說序列里每一個元素都被當做x變量,放到一個函數f(x)里,其結果是f(x1)、f(x2)、f(x3)......組成的新序列。
如何使用map函數?
map(function_to_apply, list_of_inputs)
function_to_apply:代表函數
list_of_inputs:代表輸入序列
注意:python3中 map函數返回的是 迭代器
大多數時候,我們要把列表中所有元素一個個地傳遞給一個函數,并收集輸出。
比方說:
items = [1, 2, 3, 4, 5] # 列表 squared = [] for i in items: squared.append(i**2)
map函數可以讓我們用一種簡單而漂亮得多的方式來實現:
items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))
上面使用了匿名函數,也可以自定義函數:
items = [1, 2, 3, 4, 5] def f(x): return x**2 squared = list(map(f, items))
02
reduce
reduce相比map稍復雜點
reduce的工作過程是 :在迭代序列的過程中,首先把 前兩個元素(只能兩個)傳給 函數,函數加工后,然后把 得到的結果和第三個元素 作為兩個參數傳給函數參數, 函數加工后得到的結果又和第四個元素 作為兩個參數傳給函數參數,依次類推。
reduce函數怎么用?
reduce(function, iterable[, initializer])
function:代表函數
iterable:序列
initializer:初始值(可選)
與map不同,reduce不可以直接使用,需要用from functools import reduce導入
比如說我要求10的階乘,就可以用reduce做:
# 導入reduce from functools import reduce # 定義函數 def f(x,y): return x*y # 定義序列,含1~10的元素 items = range(1,11) # 使用reduce方法 result = reduce(f,items) print(result)
關于如何分析python的map、reduce函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。