Python map和reduce函數(shù)用法示例
先看map。map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。
舉例說明,比如我們有一個(gè)函數(shù)a(x)=x*2,要把這個(gè)函數(shù)作用在一個(gè)list [1, 2, 3, 4, 5]上,就可以用map()實(shí)現(xiàn)如下:
>>> def a(x):
... return x * 2
...
>>> map(a, [1,2,3,4,5])
[2, 4, 6, 8, 10]
map傳入的第一個(gè)參數(shù)a,即a函數(shù),當(dāng)然你也可以不用map函數(shù)實(shí)現(xiàn)這功能:
>>> list = []
>>> for i in [1, 2, 3, 4, 5]:
... list.append(a(i))
...
>>> print list
[2, 4, 6, 8, 10]
從代碼量上來講,map要精簡(jiǎn)很多,所以,map()作為高階函數(shù),事實(shí)上它把運(yùn)算規(guī)則抽象了,因此,我們不但可以計(jì)算簡(jiǎn)單的a(x)=x*2,還可以計(jì)算任意復(fù)雜的函數(shù),比如,把這個(gè)list所有數(shù)字轉(zhuǎn)為字符串:
>>> map(str,[1,2,3,4,5])
['1', '2', '3', '4', '5']
>>>
只需要一行代碼,就搞定了。讓我們?cè)倏春蛠碜灶櫻┓錺ython教程的習(xí)題:利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?,其他小寫的?guī)范名字。輸入:[‘a(chǎn)dam', ‘LISA', ‘barT'],輸出:[‘Adam', ‘Lisa', ‘Bart']。作為我個(gè)人來說,我可能會(huì)先將不規(guī)范的英文名全轉(zhuǎn)換在小寫然后再通過capitalize()函數(shù),將首字母轉(zhuǎn)換在寫,代碼如下:
>>> def caps(name):
... return name.capitalize()
...
>>> def lowers(name):
... return name.lower()
...
>>> map(caps, map(lowers,['adam', 'LISA', 'barT']))
['Adam', 'Lisa', 'Bart']
再看reduce的用法。reduce(function, sequence, starting_value):對(duì)sequence中的item順序迭代調(diào)用function,如果有starting_value,還可以作為初始值調(diào)用,例如可以用來對(duì)List求和:
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
>>> reduce(add, range(1, 11))
55
>>> reduce(add, range(1, 11),20)
75
當(dāng)然求和運(yùn)算可以直接用Python內(nèi)建函數(shù)sum(),沒必要?jiǎng)佑胷educe。但是如果要把序列[1,2,3,4,5,6,7]變換成整數(shù)1234567,reduce就可以派上用場(chǎng):
>>> def fn(x, y):
... return x * 10 + y
...
>>> reduce(fn, [1,3,4,5,6,7])
134567
相關(guān)文章
pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實(shí)現(xiàn)
這篇文章主要介紹了pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
解決Pyinstaller打包為可執(zhí)行文件編碼錯(cuò)誤的問題
這篇文章主要介紹了解決Pyinstaller打包為可執(zhí)行文件編碼錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
pydantic-resolve嵌套數(shù)據(jù)結(jié)構(gòu)生成LoaderDepend管理contextvars
這篇文章主要為大家介紹了pydantic-resolve解決嵌套數(shù)據(jù)結(jié)構(gòu)生成LoaderDepend管理contextvars的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-04-04
Pygame實(shí)戰(zhàn)之迷宮游戲的實(shí)現(xiàn)
玩迷宮游戲長大的我們,欣慰地看到,下一代仍熱愛著這個(gè)經(jīng)典游戲。本文將通過Python中的Pygame庫制作這一經(jīng)典的游戲,需要的可以參考一下2022-02-02

