這篇文章給大家介紹如何分析python的map、reduce函數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在慶安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),慶安網(wǎng)站建設(shè)費(fèi)用合理。
小編講的是Python的map、reduce兩大函數(shù)。
這對兄弟是出現(xiàn)頻率極高且相當(dāng)實(shí)用的python函數(shù),初學(xué)者會較難理解,看完本文你就能搞定它們嘍!
01map
map()方法會將 一個(gè)函數(shù) 映射到序列的每一個(gè)元素上,生成新序列,包含所有函數(shù)返回值。
也就是說序列里每一個(gè)元素都被當(dāng)做x變量,放到一個(gè)函數(shù)f(x)里,其結(jié)果是f(x1)、f(x2)、f(x3)......組成的新序列。
如何使用map函數(shù)?
map(function_to_apply, list_of_inputs)
function_to_apply:代表函數(shù)
list_of_inputs:代表輸入序列
注意:python3中 map函數(shù)返回的是 迭代器
大多數(shù)時(shí)候,我們要把列表中所有元素一個(gè)個(gè)地傳遞給一個(gè)函數(shù),并收集輸出。
比方說:
items = [1, 2, 3, 4, 5] # 列表 squared = [] for i in items: squared.append(i**2)
map函數(shù)可以讓我們用一種簡單而漂亮得多的方式來實(shí)現(xiàn):
items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))
上面使用了匿名函數(shù),也可以自定義函數(shù):
items = [1, 2, 3, 4, 5] def f(x): return x**2 squared = list(map(f, items))
02
reduce
reduce相比map稍復(fù)雜點(diǎn)
reduce的工作過程是 :在迭代序列的過程中,首先把 前兩個(gè)元素(只能兩個(gè))傳給 函數(shù),函數(shù)加工后,然后把 得到的結(jié)果和第三個(gè)元素 作為兩個(gè)參數(shù)傳給函數(shù)參數(shù), 函數(shù)加工后得到的結(jié)果又和第四個(gè)元素 作為兩個(gè)參數(shù)傳給函數(shù)參數(shù),依次類推。
reduce函數(shù)怎么用?
reduce(function, iterable[, initializer])
function:代表函數(shù)
iterable:序列
initializer:初始值(可選)
與map不同,reduce不可以直接使用,需要用from functools import reduce導(dǎo)入
比如說我要求10的階乘,就可以用reduce做:
# 導(dǎo)入reduce from functools import reduce # 定義函數(shù) def f(x,y): return x*y # 定義序列,含1~10的元素 items = range(1,11) # 使用reduce方法 result = reduce(f,items) print(result)
關(guān)于如何分析python的map、reduce函數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。