Python Lambda 用法大全

cnblogs 2024-08-20 08:09:13 阅读 67

Python Lambda 用法大全

一、Lambda表达式基础

Lambda 的组成分为三部分

Lambda表达式是Python中的一种匿名函数,它可以在一行代码中定义函数并立即调用它。与普通函数不同的是,Lambda函数通常不需要使用def关键字去定义,而是在需要时直接使用lambda关键字来创建。Lambda函数可以接受任意数量的参数,但只能返回一个表达式的结果。Lambda表达式的语法形式如下:

<code>lambda arguments: expression

其中,arguments为函数的参数列表,expression为函数的返回值表达式。当参数列表为多个参数时,使用逗号分隔即可。Lambda函数返回一个函数对象,这个函数对象可以被调用,也可以被赋值给变量,甚至可以作为其他函数的参数。

Lambda表达式的基本用法:

(lambda x, y: x + y)(1, 2) # 输出3

(lambda x: x * x)(3) # 输出9

(lambda x: (x % 2 == 0))(4) # 输出True

(lambda x: (x % 2 == 0))(3) # 输出False

add = lambda x, y: x + y

print(add(1, 2)) # 输出3

二、Lambda表达式应用场景

1. 函数作为参数

Lambda表达式可以作为函数的参数传递

result = map(lambda x: x * x, [1, 2, 3, 4, 5])

print(list(result)) # 输出[1, 4, 9, 16, 25]

#将小于0.5的数设置为0,大于0.5的设置为1

import numpy as np

a=np.array ([0.1,0.2,0.3,0.6,0.8])

result = map(lambda x:( 0 if x<0.5 else 1),a)

print(list(result)) # [0, 0, 0, 1, 1]

2. 条件筛选

filter函数接收一个Lambda表达式和一个序列,它会返回序列中所有偶数组成的新序列。

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

print(list(result)) # 输出[2, 4]

3. 函数式编程

Lambda表达式可以作为函数的返回值,用于构造更为复杂的计算过程

def add_function(n):

return lambda x: x + n

add_3 = add_function(3)

print(add_3(4)) # 输出7

def do_something(callback):

data = "Hello, World!"

result = callback(data)

print(result)

do_something(lambda x: len(x)) # 输出13

三、Lambda表达式和map、filter、reduce的结合

1. Lambda表达式和map的结合

map函数和Lambda表达式常常一起使用,可以对序列中的每个元素应用Lambda表达式,并返回结果序列。

result = map(lambda x: x * x, [1, 2, 3, 4, 5])

print(list(result)) # 输出[1, 4, 9, 16, 25]

2. Lambda表达式和filter的结合

filter函数和Lambda表达式组合使用可以实现对序列中符合特定条件的元素进行筛选。

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

print(list(result)) # 输出[2, 4]

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers) #[2, 4, 6, 8, 10]

#上面的代码使用了filter()函数来过滤列表numbers,使用Lambda表达式判断元素是否为偶数。最终输出的是筛选出来的偶数列表。

3. Lambda表达式和reduce的结合

reduce函数可以对序列中的元素依次累加,Lambda表达式可以定义累加过程。

from functools import reduce

result = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])

print(result) # 输出15

四、Lambda表达式在Python中的高级用法

1. 列表排序(sort)

列表的sort方法可以接收一个key参数,用于定义列表排序的规则。Lambda表达式可以作为参数传递给key,定义更复杂的列表排序规则。

fruits = ["apple", "orange", "banana", "lemon"]

fruits.sort(key=lambda x: len(x))

print(fruits) # 输出['apple', 'lemon', 'banana', 'orange']

students = [('Jack', 30), ('Bob', 27), ('Linda', 25), ('Mike', 28)]

students.sort(key=lambda student: student[1])

print(students) #[('Linda', 25), ('Bob', 27), ('Mike', 28), ('Jack', 30)]

2. 列表切片

Lambda表达式可以用来指定切片的起始位置和结束位置。

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

result = nums[lambda x: 2:lambda x: 5]

print(result) # 输出[3, 4, 5]

3. 字典排序(sorted)

在Python中,可以使用sorted函数对字典进行排序。Lambda表达式可以指定排序规则。

data = {"apple": 5, "orange": 3, "banana": 8, "lemon": 1}

sorted_data = sorted(data.items(), key=lambda x: x[1])

print(sorted_data) # 输出[('lemon', 1), ('orange', 3), ('apple', 5), ('banana', 8)]

Lambda表达式注意事项

  1. Lambda表达式的使用场景一般用于定义简单的函数,如果需要编写复杂的函数,建议使用普通函数。
  2. Lambda表达式用于匿名函数,只能有一个表达式,不用写return,自动返回其表达式的结果。
  3. Lambda表达式是表达式,不是语句,因此不能包含循环、条件判断等复杂的语句。
  4. Lambda函数也是函数对象,可以将其赋值给变量或作为其他函数的参数来使用。
  5. Lambda表达式可以被Python的函数式编程模块(如filter()、map())所使用。

参考链接

https://www.jb51.net/python/304650qbh.htm

https://blog.csdn.net/naer_chongya/article/details/130770037

https://baijiahao.baidu.com/s?id=1781168343754714555&wfr=spider&for=pc


上一篇: JAVA基础之-参数传递

下一篇: 有效的括号(20)

本文标签

lambda    python   


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。