精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
python的匿名函數(shù)lambda解釋及用法

lambda函數(shù)的語法只包含一個(gè)語句,如下:    lambda arg1,arg2,.....argn:expression(主要是看下面的例子)
代碼示例:

#-*- coding:utf-8 -*-#__author__ = "www.iplaypy.com" # 普通python函數(shù)def func(a,b,c):    return a+b+c print func(1,2,3)# 返回值為6 # lambda匿名函數(shù)f = lambda a,b,c:a+b+c print f(1,2,3)# 返回結(jié)果為6

# 大家注意觀察上面的Python示例代碼,f = lambda a,b,c:a+b+c 中的關(guān)鍵字lambda表示匿名函數(shù),
# 冒號:之前的a,b,c表示它們是這個(gè)函數(shù)的參數(shù)。
# 匿名函數(shù)不需要return來返回值,表達(dá)式本身結(jié)果就是返回值。

 

 

 

(以下是我復(fù)制過來的一些代碼,正是通過這些代碼讓我對匿名函數(shù)有了一個(gè)比較深入的了解,所以建議大家認(rèn)真看看,)

無參匿名函數(shù):
------
>>> t = lambda : True #分號前無任何參數(shù)
>>> t()
True

等價(jià)于下面的def定義的函數(shù)
>>> def func(): return True
>>> func()
True

------

>>> s = "this is\na\ttest" #建此字符串按照正常情形輸出
>>> s
'this is\na\ttest'
>>> print s.split() #split函數(shù)默認(rèn)分割:空格,換行符,TAB
['this', 'is', 'a', 'test']
>>> ' '.join(s.split()) #用join函數(shù)轉(zhuǎn)一個(gè)列表為字符串
'this is a test'

等價(jià)于

>>> (lambda s:' '.join(s.split()))("this is\na\ttest")




帶參數(shù)匿名函數(shù)

>>> lambda x: x**3 #一個(gè)參數(shù)
>>> lambda x,y,z:x+y+z #多個(gè)參數(shù)

>>> lambda x,y=3: x*y #允許參數(shù)存在默認(rèn)值



匿名函數(shù)調(diào)用

#直接賦值給一個(gè)變量,然后再像一般函數(shù)調(diào)用

------

>>> c = lambda x,y,z: x*y*z
>>> c(2,3,4)
24

------

>>> c = lambda x,y=2: x+y #使用了默認(rèn)值
>>> c(10) #不輸?shù)脑挘褂媚J(rèn)值2
12

------

>>> a = lambda *z:z #*z返回的是一個(gè)元祖
>>> a('Testing1','Testing2')
('Testing1', 'Testing2')

------

>>> c = lambda **Arg: Arg #arg返回的是一個(gè)字典
>>> c()
{}

#直接后面?zhèn)鬟f實(shí)參

------

>>> (lambda x,y: x if x> y else y)(101,102)
102

------

>>> (lambda x:x**2)(3)
9

#lambda返回的值,結(jié)合map,filter,reduce使用

>>> filter(lambda x:x%3==0,[1,2,3,4,5,6])
[3, 6]

等價(jià)于下面的列表推導(dǎo)式

>>> l = [x for x in [1,2,3,4,5,6] if x%3==0]
>>> l
[3, 6]


嵌套使用

#lambda嵌套到普通函數(shù)中,lambda函數(shù)本身做為return的值

------

>>> def increment(n):
... return lambda x: x+n
...
>>> f=increment(4)
>>> f(2)
6

------

>>> def say():
... title = 'Sir,'
... action= lambda x: title + x
... return action
...
>>> act = say()
>>> act('Smith!')
'Sir,Smith!'



大量例子:

例01: 字符串聯(lián)合,有默認(rèn)值,也可以x=(lambda...)這種格式

>>> x = (lambda x="Boo",y="Too",z="Zoo": x+y+z)
>>> x("Foo")
'FooTooZoo'



例02: 和列表聯(lián)合使用

>>> L = [lambda x:x**2,\
lambda x:x**3,\
lambda x:x**4]

>>> for f in L:
... print f(2)
...
4
8
16

也可以如下面這樣調(diào)用

>>> print L[0](3)
9

例03: 和字典結(jié)合使用

>>> key = 'B'
>>> dic = { 'A': lambda: 2*2,\
... 'B': lambda: 2*4,\
... 'C': lambda: 2*8}
>>> dic[key]()
8

例04: 求最小值

>>> lower = lambda x,y: x if x<y else y
>>> lower('aa','ab')
'aa'



例05: 和map及l(fā)ist聯(lián)合使用

>>> import sys
>>> showall = lambda x:list(map(sys.stdout.write,x))
>>> showall(['Jerry\n','Sherry\n','Alice\n'])
Jerry
Sherry
Alice

>>> showall(['Jerry','Sherry','Alice'])
JerrySherryAlice

等價(jià)于下面

>>> showall = lambda x: [sys.stdout.write(line) for line in x]
>>> showall(('I\t','Love\t','You!'))
I Love You![None, None, None]



例06: 在Tkinter中定義內(nèi)聯(lián)的callback函數(shù)

import sys
from Tkinter import Button,mainloop


x = Button(text='Press me',
command=(lambda:sys.stdout.write('Hello,World\n')))
x.pack()
x.mainloop()



>>>

Hello,World!

Hello,World!



例07: lambda和map聯(lián)合使用,

>>>  out = lambda *x: sys.stdout.write(' '.join(map(str,x)))
>>> out('This','is','a','book!\n')
This is a book!



例08: 判斷字符串是否以某個(gè)字母開頭

>>> print (lambda x: x.startswith('B'))('Bob')
True

-----

>>> Names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
>>> B_Name= filter(lambda x: x.startswith('B'),Names)
>>> B_Name
['Bob', 'Barbara']



例09: lambda和map聯(lián)合使用:

>>>  squares = map(lambda x:x**2,range(5))
>>> squares
[0, 1, 4, 9, 16]



例10. lambda和map,filter聯(lián)合使用:

>>>  squares = map(lambda x:x**2,range(10))
>>> filters = filter(lambda x:x>5 and x<50,squares)
>>> filters
[9, 16, 25, 36, 49]



例11. lambda和sorted聯(lián)合使用

#按death名單里面,按年齡來排序

#匿名函數(shù)的值返回給key,進(jìn)來排序

>>> death = [ ('James',32),
('Alies',20),
('Wendy',25)]

>>> sorted(death,key=lambda age:age[1]) #按照第二個(gè)元素,索引為1排序
[('Alies', 20), ('Wendy', 25), ('James', 32)]



例12. lambda和reduce聯(lián)合使用

>>> L = [1,2,3,4]
>>> sum = reduce(lambda x,y:x+y,L)
>>> sum
10



例13. 求2-50之間的素?cái)?shù)

#素?cái)?shù):只能被1或被自己整除的數(shù)

>>> nums = range(2,50)
>>> for i in nums:
nums = filter(lambda x:x==i or x % i,nums)
>>> nums
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]



例14. 求兩個(gè)列表元素的和

>>> a = [1,2,3,4]
>>> b = [5,6,7,8]
>>> map(lambda x,y:x+y, a,b)
[6, 8, 10, 12]



例15. 求字符串每個(gè)單詞的長度

>>> sentence = "Welcome To Beijing!"
>>> words = sentence.split()

>>> lengths = map(lambda x:len(x),words)
>>> lengths
[7, 2, 8]

寫成一行:

>>>  print map(lambda x:len(x),'Welcome To Beijing!'.split())

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
匿名函數(shù)--python
python入門教程(七)函數(shù)式編程,匿名函數(shù)和map,filter函數(shù)
理解 10 個(gè)最難的 Python 概念
Python函數(shù)里的4個(gè)小花招
Python函數(shù)參數(shù)實(shí)例解讀
最方便的函數(shù)lambda,再也不會(huì)看不懂大神的代碼!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 太白县| 平遥县| 逊克县| 新邵县| 永泰县| 城步| 依兰县| 宜春市| 上蔡县| 清新县| 拉萨市| 商丘市| 登封市| 屏南县| 长岛县| 内江市| 介休市| 石家庄市| 大庆市| 岚皋县| 措美县| 鲁山县| 新巴尔虎右旗| 天柱县| 吉林市| 房山区| 大城县| 靖远县| 吉首市| 吉首市| 无极县| 略阳县| 沙洋县| 桃园市| 东乡县| 沿河| 山西省| 阜新市| 资溪县| 安溪县| 贵定县|