一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python map和reduce函數(shù)用法示例

Python map和reduce函數(shù)用法示例

2019-11-21 14:33Python教程網(wǎng) Python

這篇文章主要介紹了Python map和reduce函數(shù)用法示例,本文給出了兩個(gè)函數(shù)的多個(gè)用法示例,需要的朋友可以參考下

先看map。map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。

舉例說(shuō)明,比如我們有一個(gè)函數(shù)a(x)=x*2,要把這個(gè)函數(shù)作用在一個(gè)list [1, 2, 3, 4, 5]上,就可以用map()實(shí)現(xiàn)如下:

復(fù)制代碼代碼如下:

>>> 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)這功能:

 

復(fù)制代碼代碼如下:

>>> list = []
>>> for i in [1, 2, 3, 4, 5]:
...     list.append(a(i))
... 
>>> print list
[2, 4, 6, 8, 10]

 

從代碼量上來(lái)講,map要精簡(jiǎn)很多,所以,map()作為高階函數(shù),事實(shí)上它把運(yùn)算規(guī)則抽象了,因此,我們不但可以計(jì)算簡(jiǎn)單的a(x)=x*2,還可以計(jì)算任意復(fù)雜的函數(shù),比如,把這個(gè)list所有數(shù)字轉(zhuǎn)為字符串:

 

復(fù)制代碼代碼如下:

>>> map(str,[1,2,3,4,5])
['1', '2', '3', '4', '5']
>>>

 

只需要一行代碼,就搞定了。讓我們?cè)倏春蛠?lái)自顧雪峰python教程的習(xí)題:利用map()函數(shù),把用戶輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?xiě),其他小寫(xiě)的規(guī)范名字。輸入:[‘adam', ‘LISA', ‘barT'],輸出:[‘Adam', ‘Lisa', ‘Bart']。作為我個(gè)人來(lái)說(shuō),我可能會(huì)先將不規(guī)范的英文名全轉(zhuǎn)換在小寫(xiě)然后再通過(guò)capitalize()函數(shù),將首字母轉(zhuǎn)換在寫(xiě),代碼如下:

 

復(fù)制代碼代碼如下:

>>> 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)用,例如可以用來(lái)對(duì)List求和:

 

復(fù)制代碼代碼如下:

>>> 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(),沒(méi)必要?jiǎng)佑胷educe。但是如果要把序列[1,2,3,4,5,6,7]變換成整數(shù)1234567,reduce就可以派上用場(chǎng):

 

復(fù)制代碼代碼如下:

>>> def fn(x, y):
...     return x * 10 + y
... 
>>> reduce(fn, [1,3,4,5,6,7])
134567

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久AV国产麻豆HD真实 | 京东热dj6666| 久久精品中文騷妇女内射 | 国产精品人人视频 | 草莓秋葵菠萝蜜绿巨人污 | 欧美午夜寂寞影院安卓列表 | 果冻传媒九一制片厂网站 | 久久亚洲精选 | 人成午夜免费大片在线观看 | 嗯啊在线观看免费影院 | 亚洲精品卡1卡二卡3卡四卡 | 午夜福利在线观看6080 | 国产拍拍拍免费专区在线观看 | 四虎在线永久免费视频网站 | 精品国产一区二区在线观看 | 欧美xbxbxbbxxbb精品 | 国产巨大bbbb俄罗斯 | av排名| 99久久国产综合精品网成人影院 | 青青青在线视频播放 | 99这里只有精品66视频 | 国产成人lu在线视频 | 日韩欧美推理片免费看完整版 | 男人操女人视频 | 无套暴躁白丝秘书 | 美女露尿口 | 爸爸干女儿小说 | 欧美a级完整在线观看 | 久久这里只有精品视频9 | 国产精品成人免费福利 | 欧美精选欧美极品 | 精品久久久噜噜噜久久7 | 国产情侣自拍网 | 欧美高清在线不卡免费观看 | 二区三区视频 | 青青青久在线视频免费观看 | 亚洲精品国产成人 | 亚洲色图中文字幕 | 色综合视频一区二区观看 | 久久免费看少妇高潮A片2012 | 教练你好大轻点漫 |