开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

Python lambda 函数

Pythonlambda函数教程展示了如何在Python中创建匿名函数。Python中的匿名函数是使用lambda关键字创建的。

Pythonlambda函数

Pythonlambda函数,也称为匿名函数,是没有名称的内联函数。它们是使用lambda关键字创建的。这是Python内置函数范式的一部分。

Pythonlambda函数仅限于单个表达式。它们可以用在任何可以使用正常功能的地方。

Pythonlambda语法

Pythonlambda具有以下语法:

z = lambda x: x * y

该语句使用lambda关键字创建一个匿名函数。该函数将两个值相乘。x是传递给lambda函数的参数。参数后跟一个冒号字符。冒号旁边的代码是调用lambda函数时执行的表达式。lambda函数被分配给z变量。

Pythonlambda示例

以下是演示Pythonlambda函数的简单示例。

#!/usr/bin/python

def square(x):
    
    return x * x

sqr_fun = lambda x: x * x

print(square(3))
print(sqr_fun(4))

在示例中,我们有两个计算值平方的函数。

def square(x):
    
    return x * x

这是一个用def关键字定义的Python函数。函数的名称是square

sqr_fun = lambda x: x * x

这里我们用lambda定义了一个匿名的内联函数。请注意,该函数没有名称。sqr_fun是保存创建的lambda函数的变量的名称。

$ ./lambda_fun_simple.py 
9
16

带地图的Pythonlambda

Pythonlambda函数对于map函数很有用。我们可以创建更简洁的代码。Pythonmap是一个内置函数,它将给定的函数应用于可迭代对象的每个项目并返回一个迭代器对象。

#!/usr/bin/python

nums = [1, 2, 3, 4, 5, 6]

nums_squared = map(lambda x: x * x, nums)

for num in nums_squared:
    print(num)

该示例为map创建了一个小的内联函数作为参数。通过map函数,我们将lambda函数应用于列表的每个元素。

$ ./lambda_fun_map.py 
1
4
9
16
25
36

带过滤器的Pythonlambda

Pythonlambda函数可以与filter函数一起使用。filter函数根据函数返回true的可迭代对象的那些元素构造一个列表。

#!/usr/bin/python

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

nums_filtered = list(filter(lambda x: x % 2, nums))

print(nums_filtered)

在示例中,我们过滤了整数列表。新列表仅包含奇数。

nums_filtered = list(filter(lambda x: x % 2, nums))

filter的第一个参数是处理列表元素的函数。lambda函数具有x%2表达式,对于奇数返回true。

$ ./lambda_fun_filter.py 
[1, 3, 5, 7, 9, 11]

带排序的Pythonlambda

Python列表有一个内置的list.sort方法,可以就地修改列表。该方法有一个关键参数,用于指定在进行比较之前要在每个列表元素上调用的函数。在那里我们可以使用lambda函数。

#!/usr/bin/python

users = [
  {'name': 'John Doe', 'date_of_birth': 1987},
  {'name': 'Jane Doe', 'date_of_birth': 1996},
  {'name': 'Robert Brown', 'date_of_birth': 1977},
  {'name': 'Lucia Smith', 'date_of_birth': 2002},
  {'name': 'Patrick Dempsey', 'date_of_birth': 1994}
]

users.sort(reverse=True, key=lambda e: e['date_of_birth']) 

for user in users:
    print(user)

我们有一个用户词典列表。使用lambda函数,我们按出生日期的相反顺序对用户进行排序。

$ ./lambda_fun_sort.py 
{'name': 'Lucia Smith', 'date_of_birth': 2002}
{'name': 'Jane Doe', 'date_of_birth': 1996}
{'name': 'Patrick Dempsey', 'date_of_birth': 1994}
{'name': 'John Doe', 'date_of_birth': 1987}
{'name': 'Robert Brown', 'date_of_birth': 1977}

Pythonlambda与Tkinter

Pythonlambda函数可用于使用Tkinter进行GUI编程。它允许为命令参数创建小型内联函数。

#!/usr/bin/python

from tkinter import Tk, BOTH, messagebox
from tkinter.ttk import Frame, Button


class Example(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        
        self.initUI()
        
        
    def initUI(self):
      
        self.parent.title("Buttons")

        self.pack(fill=BOTH, expand=1)

        btn1 = Button(self, text="Button 1",
            command=lambda: self.onClick("Button 1"))
        btn1.pack(padx=5, pady=5)
        
        btn2 = Button(self, text="Button 2",
            command=lambda: self.onClick("Button 2"))
        btn2.pack(padx=5, pady=5)
        
        btn2 = Button(self, text="Button 3",
            command=lambda: self.onClick("Button 3"))
        btn2.pack(padx=5, pady=5)   
        
        
    def onClick(self, text):
        
        messagebox.showinfo("Button label", text);
        

def main():
  
    root = Tk()
    root.geometry("250x150+300+300")
    app = Example(root)
    root.mainloop()  


if __name__ == '__main__':
    main()  

我们有三个按钮共享一个回调。lambda函数允许我们将特定数据发送到回调函数。每个按钮在消息框中显示其标签。

btn1 = Button(self, text="Button 1",
    command=lambda: self.onClick("Button 1"))

我们将匿名函数传递给command参数。我们将按钮的标签发送到onClick回调。

在本教程中,我们使用了Pythonlambda函数。

列出所有Python教程。

未经允许不得转载:我爱分享网 » Python lambda 函数

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏