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

