日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python匿名函数lambda_python的匿名函数lambda解释及用法

發布時間:2023/12/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python匿名函数lambda_python的匿名函数lambda解释及用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無參匿名函數:

------

>>> t = lambda : True #分號前無任何參數

>>> t()

True

等價于下面的def定義的函數

>>> def func(): return True

>>> func()

True

------

>>> s = "this is\na\ttest" #建此字符串按照正常情形輸出

>>> s

'this is\na\ttest'

>>> print s.split() #split函數默認分割:空格,換行符,TAB

['this', 'is', 'a', 'test']

>>> ' '.join(s.split()) #用join函數轉一個列表為字符串

'this is a test'

等價于

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

帶參數匿名函數

>>> lambda x: x**3 #一個參數

>>> lambda x,y,z:x+y+z #多個參數

>>> lambda x,y=3: x*y #允許參數存在默認值

匿名函數調用

#直接賦值給一個變量,然后再像一般函數調用

------

>>> c = lambda x,y,z: x*y*z

>>> c(2,3,4)

24

------

>>> c = lambda x,y=2: x+y #使用了默認值

>>> c(10) #不輸的話,使用默認值2

12

------

>>> a = lambda *z:z #*z返回的是一個元祖

>>> a('Testing1','Testing2')

('Testing1', 'Testing2')

------

>>> c = lambda **Arg: Arg #arg返回的是一個字典

>>> c()

{}

#直接后面傳遞實參

------

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

102

------

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

9

#lambda返回的值,結合map,filter,reduce使用

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

[3, 6]

等價于下面的列表推導式

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

>>> l

[3, 6]

嵌套使用

#lambda嵌套到普通函數中,lambda函數本身做為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: 字符串聯合,有默認值,也可以x=(lambda...)這種格式

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

>>> x("Foo")

'FooTooZoo'

例02: 和列表聯合使用

>>> L = [lambda x:x**2,\

lambda x:x**3,\

lambda x:x**4]

>>> for f in L:

... print f(2)

...

4

8

16

也可以如下面這樣調用

>>> print L[0](3)

9

例03: 和字典結合使用

>>> 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

>>> lower('aa','ab')

'aa'

例05: 和map及list聯合使用

>>> 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

等價于下面

>>> 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中定義內聯的callback函數

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聯合使用,

>>> out = lambda *x: sys.stdout.write(' '.join(map(str,x)))

>>> out('This','is','a','book!\n')

This is a book!

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

>>> 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聯合使用:

>>> squares = map(lambda x:x**2,range(5))

>>> squares

[0, 1, 4, 9, 16]

例10. lambda和map,filter聯合使用:

>>> 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聯合使用

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

#匿名函數的值返回給key,進來排序

>>> death = [ ('James',32),

('Alies',20),

('Wendy',25)]

>>> sorted(death,key=lambda age:age[1]) #按照第二個元素,索引為1排序

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

例12. lambda和reduce聯合使用

>>> L = [1,2,3,4]

>>> sum = reduce(lambda x,y:x+y,L)

>>> sum

10

例13. 求2-50之間的素數

#素數:只能被1或被自己整除的數

>>> 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. 求兩個列表元素的和

>>> a = [1,2,3,4]

>>> b = [5,6,7,8]

>>> map(lambda x,y:x+y, a,b)

[6, 8, 10, 12]

例15. 求字符串每個單詞的長度

>>> 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())

總結

以上是生活随笔為你收集整理的python匿名函数lambda_python的匿名函数lambda解释及用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。