全国服务热线:

15861139266

Lambda函数竟然这么实用,苏州上位机培训,苏州工业机器人培训
发布时间:2024-05-30 09:11:12 点击次数:112

Lambda 函数

Lambda函数是一种匿名函数,也就是说,它没有使用def关键字定义的函数名。Lambda函数通常用于简短的、一次性的任务,比如作为参数传递给高阶函数(例如filter()、map()等)。

lambda arguments: expression

这里,arguments是传递给lambda函数的参数列表,expression是一个关于这些参数的表达式,它返回的值就是这个lambda函数的返回值。

Lambda 函数可以接受任意数量的参数,但只能有一个表达式。这个表达式的计算结果就是函数的返回值。

例如,一个简单的lambda函数,它接受一个参数并返回它的平方:

square = lambda x: x * x

print(square(5))  # 输出 25

好,以上我们了解了Lambda函数的基本使用方法,接下来分享一些操作技巧,供大家学习参考。


1、与sorted()结合使用进行自定义排序

students = [{'name': 'John', 'age': 20}, {'name': 'Jane', 'age': 22}]

def sort_key(student):

    return student['age']


sorted_students = sorted(students, key=sort_key)

print(sorted_students)


在这个例子中,我们定义了一个名为sort_key的函数,它接受一个学生字典作为参数,并返回学生的年龄。然后我们将这个函数传递给sorted()函数的key参数,以便按照年龄对学生列表进行排序。


像这种简单的排序,我们可以使用lambda函数:

students = [{'name': 'John', 'age': 20}, {'name': 'Jane', 'age': 22}]

sorted_students = sorted(students, key=lambda x: x['age'])


2、与filter()结合使用进行元素筛选

numbers = range(10)

def is_even(number):

    return number % 2 == 0


even_numbers = list(filter(is_even, numbers))

print(even_numbers)

在这个例子中,我们定义了一个名为 is_even 的函数,它接受一个数字作为参数,并返回一个布尔值,指示该数字是否为偶数。然后我们将这个函数传递给 filter() 函数,以便筛选出范围内的所有偶数。


使用lambda函数:

numbers = range(10)

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

3、在高阶函数中作为参数传递


from functools import reduce

numbers = [1, 2, 3, 4, 5]

sum_of_squares = reduce(lambda x, y: x + y * y, numbers, 0)

考虑到这部分内容,可能部分粉丝没有涉猎过相关内容,所以这里解释一下:

(1)functools是Python的标准库中的一个模块,它提供了用于高阶函数(即那些作用于或返回其他函数的函数)的实用工具。reduce函数是其中之一。

(2)sum_of_squares = reduce(lambda x, y: x + y * y, numbers, 0):这行代码使用reduce函数来计算列表numbers中每个元素的平方和。


lambda x, y: x + y * y:它接受两个参数x和y。这个lambda函数的目的是将当前累积的和x与下一个元素的平方y * y相加,然后返回新的累积和。

numbers:这是reduce函数作用的列表。

0:这是reduce函数的初始值。在第一次调用lambda函数时,x将被设置为此初始值,而y将是列表中的第一个元素。


(3)reduce函数的工作方式是遍历列表numbers中的所有元素,每次迭代都应用lambda函数。在第一次迭代中,x是初始值0,y是列表中的第一个元素1。lambda函数计算0 + 1 * 1,结果是1。在第二次迭代中,x是上一次迭代的结果1,y是列表中的第二个元素2。lambda函数计算1 + 2 * 2,结果是5,依此类推。最终,reduce函数返回所有元素平方的和。


因此,sum_of_squares将是1^2 + 2^2 + 3^2 + 4^2 + 5^2的结果,即55。


4、在数据处理或机器学习中的应用

df['new_column'] = df.apply(lambda row: row['col1'] + row['col2'], axis=1)

这行代码的作用是在 DataFrame df 中创建一个新的列 new_column,这个新列的每个元素是同一行的 col1 和 col2 列的和。这个操作是对 DataFrame 中的每一行独立进行的,因此 new_column 中的每个值都是对应行的 col1 和 col2 的和。


就我们举的例子而言,其实这里完全可以更简单化:


df['new_column'] = df['col1'] + df['col2']

没错,就这个例子而言,使用下面的代码运行速度会更快。

在大多数情况下,应该优先使用向量化的操作,因为它们更快。只有当需要执行复杂的操作,且这些操作不能简单地用向量化的方式完成时,才应该考虑使用apply()方法。

尽管lambda函数在这些高级用法中很有用,但需要注意的是,对于复杂的逻辑,使用普通的函数定义可能更为清晰和可维护。Lambda函数最适合用于简短且目的明确的代码片段。


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络