>> def f(x): return x % 2 != 0 and x %" />

国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:32:35
文檔

Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹

Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹:filter(function, sequence):對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為T(mén)rue的item組成一個(gè)List/String/Tuple(取決于sequence的類(lèi)型)返回: 代碼如下: >>> def f(x): return x % 2 != 0 and x %
推薦度:
導(dǎo)讀Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹:filter(function, sequence):對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為T(mén)rue的item組成一個(gè)List/String/Tuple(取決于sequence的類(lèi)型)返回: 代碼如下: >>> def f(x): return x % 2 != 0 and x %

filter(function, sequence):對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為T(mén)rue的item組成一個(gè)List/String/Tuple(取決于sequence的類(lèi)型)返回:
代碼如下:


>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, "abcdef")
'bcdef'

map(function, sequence) :對(duì)sequence中的item依次執(zhí)行function(item),見(jiàn)執(zhí)行結(jié)果組成一個(gè)List返回:
代碼如下:


>>> def cube(x): return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x
...
>>> map(cube , "abcde")
['aa', 'bb', 'cc', 'dd', 'ee']


另外map也支持多個(gè)sequence,這就要求function也支持相應(yīng)數(shù)量的參數(shù)輸入:
代碼如下:


>>> def add(x, y): return x+y
>>> map(add, range(8), range(8))
[0, 2, 4, 6, 8, 10, 12, 14]

reduce(function, sequence, starting_value):對(duì)sequence中的item順序迭代調(diào)用function,如果有starting_value,還可以作為初始值調(diào)用,例如可以用來(lái)對(duì)List求和:
代碼如下:


>>> def add(x,y): return x + y
>>> reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20)
75 (注:1+2+3+4+5+6+7+8+9+10+20)

lambda:這是Python支持一種有趣的語(yǔ)法,它允許你快速定義單行的最小函數(shù),類(lèi)似與C語(yǔ)言中的宏,這些叫做lambda的函數(shù),是從LISP借用來(lái)的,可以用在任何需要函數(shù)的地方:
代碼如下:


>>> g = lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3)
6

我們也可以把filter map reduce 和lambda結(jié)合起來(lái)用,函數(shù)就可以簡(jiǎn)單的寫(xiě)成一行。
例如:
代碼如下:


kmpathes = filter(lambda kmpath: kmpath,
map(lambda kmpath: string.strip(kmpath),
string.split(l, ':')))


看起來(lái)麻煩,其實(shí)就像用語(yǔ)言來(lái)描述問(wèn)題一樣,非常優(yōu)雅。
對(duì) l 中的所有元素以':'做分割,得出一個(gè)列表。對(duì)這個(gè)列表的每一個(gè)元素做字符串strip,形成一個(gè)列表。對(duì)這個(gè)列表的每一個(gè)元素做直接返回操作(這個(gè)地方可以加上過(guò)濾條件限制),最終獲得一個(gè)字符串被':'分割的列表,列表中的每一個(gè)字符串都做了strip,并可以對(duì)特殊字符串過(guò)濾。

---------------------------------------------------------------

lambda表達(dá)式返回一個(gè)函數(shù)對(duì)象
例子:
代碼如下:


func = lambda x,y:x+y
func相當(dāng)于下面這個(gè)函數(shù)
def func(x,y):
return x+y


注意def是語(yǔ)句而lambda是表達(dá)式
下面這種情況下就只能用lambda而不能用def
代碼如下:


[(lambda x:x*x)(x) for x in range(1,11)]

map,reduce,filter中的function都可以用lambda表達(dá)式來(lái)生成!

map(function,sequence)
把sequence中的值當(dāng)參數(shù)逐個(gè)傳給function,返回一個(gè)包含函數(shù)執(zhí)行結(jié)果的list。
如果function有兩個(gè)參數(shù),即map(function,sequence1,sequence2)。

例子:
求1*1,2*2,3*3,4*4
代碼如下:


map(lambda x:x*x,range(1,5))


返回值是[1,4,9,16]

reduce(function,sequence)

function接收的參數(shù)個(gè)數(shù)只能為2
先把sequence中第一個(gè)值和第二個(gè)值當(dāng)參數(shù)傳給function,再把function的返回值和第三個(gè)值當(dāng)參數(shù)傳給
function,然后只返回一個(gè)結(jié)果。

例子:
求1到10的累加
代碼如下:


reduce(lambda x,y:x+y,range(1,11))


返回值是55。

filter(function,sequence)

function的返回值只能是True或False
把sequence中的值逐個(gè)當(dāng)參數(shù)傳給function,如果function(x)的返回值是True,就把x加到filter的返回值里面。一般來(lái)說(shuō)filter的返回值是list,特殊情況如sequence是string或tuple,則返回值按照sequence的類(lèi)型。

例子:
找出1到10之間的奇數(shù)
代碼如下:


filter(lambda x:x%2!=0,range(1,11))


返回值
代碼如下:


[1,3,5,7,9]



如果sequence是一個(gè)string
代碼如下:


filter(lambda x:len(x)!=0,'hello')返回'hello'
filter(lambda x:len(x)==0,'hello')返回''

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹

Python中的特殊語(yǔ)法:filter、map、reduce、lambda介紹:filter(function, sequence):對(duì)sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為T(mén)rue的item組成一個(gè)List/String/Tuple(取決于sequence的類(lèi)型)返回: 代碼如下: >>> def f(x): return x % 2 != 0 and x %
推薦度:
標(biāo)簽: map python lambda
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top
主站蜘蛛池模板: 欧美一区二区在线观看视频 | 精品国产91久久久久久久 | 国产日韩欧美亚洲综合 | 国产三级一区二区 | 国产成人精品免费大全 | 国产一级特黄高清免费大片dvd | 国产精品一区在线观看 | 成人免费视频一区二区 | 欧美视频区 | 欧美一区二区三区视频 | 久久国产成人午夜aⅴ影院 久久国产精品成人免费古装 | 在线播放一区二区 | 91精品国产高清久久久久久91 | 国产激情一区二区三区在线观看 | 国产精品成人免费 | 久久er99热精品一区二区 | 亚洲日韩欧美视频 | 欧美a色爱欧美综合v | 国产在线一区二区三区四区 | 一区二区三区电影 | 久久久国产成人精品 | 成人亚洲国产精品久久 | 国产精品毛片va一区二区三区 | 精品久久亚洲一级α | 亚洲精品在线免费看 | 亚洲国产成人久久综合碰 | 日韩一区二区三区视频 | 免费成人毛片 | 日本天堂在线 | 欧美日韩免费一区二区在线观看 | 亚洲wwww| 国产成人久久精品区一区二区 | 欧美日韩一二区 | 北条麻妃 在线 | 国产高清在线免费 | 色婷婷综合久久久久中文一区二区 | 久久久久久久亚洲精品 | 福利一区二区 | 日本激情一区二区三区 | 欧美亚洲综合另类 | 国产黄色片一级 |