Python几个特殊函数

在Python中,有几个特别的函数,它们常常被看做是Python能够进行所谓“函数式编程”的见证。它们是:filter、map、reduce、lambda、yield。有了它们,可以使得程序更简洁,没有它们,程序也可以以其他方式实现,只是有些麻烦罢了。

lambda

lambda函数,是一个一行就能解决问题的函数。

lambda arg1,arg2,...argN : expression using arguments

>>> g = lambda x,y:x*y
>>> g(10,3)
30

1、lambda后面直接跟变量
2、变量后面是冒号
3、冒号后面是表达式,表达式计算结果是本函数的返回值

虽然lambda函数可以接收任意多个参数(包括可选参数)并且返回单个表达式的值,但是lambda函数不能包含命令,包含的表达式不能超过一个。不要试图向lambda函数中塞入太多的东西;如果需要更复杂的东西,应该定义一个普通函数,然后要多长有多长。

map

map(function ,iterable,...)
说明:function是一个函数,iterable是一个序列对象

>>> items = [1,2,3,4,5]
>>> map(lambda x:x**2,items)
[1, 4, 9, 16, 25]

1、对于iterable中 的每个元素,依次应用function的方法(函数)这本质上就是一个for循环
2、将所有结果返回一个list
3、如果参数很多,则那些参与并执行function。

例如:

>>> items = [1,2,3,4,5]
>>> map(lambda x:x+1,items)
[2, 3, 4, 5, 6]
>>>
>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,10]
>>> map(lambda x,y:x+y,lst1,lst2)
[7, 9, 11, 13, 15]
>>>

reduce

reduce(function, iterable[ initializer])
原理:
从以上图可以看出,是将序列中的元素想加。


20401.png
>>> reduce(lambda x,y:x+y,[1,2,3,4,5])
15

有两个 list,a = [3,9,8,5,2],b=[1,4,9,2,6],计算:a[0]b[0]+a[1]b[1]+...的结果。

>>> a = [3,9,8,5,2]
>>> b = [1,4,9,2,6]
>>> reduce(lambda x,y:x+y,map(lambda x,y:x*y,a,b))
133

filter

filter(function, iterable)
filter 的中文含义是“过滤器”,在 Python 中,它就是起到了过滤器的作用。首先看官方说明:

>>> numbers = range(-5,5)
>>> numbers
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
>>> filter(lambda x:x>0,numbers)
[1, 2, 3, 4]

>>> filter(lambda y:y!='u','wuxiaoxin')
'wxiaoxin'

以下等效:

>>> [x for x in numbers if x>0]
[1, 2, 3, 4]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容