首页 > 编程语言 >Python教程(16)——lambda表达式详解

Python教程(16)——lambda表达式详解

时间:2023-12-24 14:32:19浏览次数:52  
标签:定义 16 Python 函数 numbers print 表达式 lambda

lambda函数介绍

我们平时经常可以在Python的代码中看到一种lambda开头的这种表达式,如果没有学过Python的相关知识,可能会一脸懵逼,不清楚到底这个关键字是干嘛的,用来表示什么。

实际上这个就是lambda函数。

lambda函数是Python中一种特殊的匿名函数,但不仅仅只存在Python中,它允许我们快速定义简单的函数,而不需要使用def关键字来定义一个正式的函数。它通常用于简化代码,使得函数定义更加简洁。

lambda函数语法

lambda函数的一般语法如下:

lambda 参数列表: 表达式

其中,lambda是Python中定义lanbda函数的关键字,绝对不可以忽略,它用来标识该语句是个lambda函数。参数列表是一个或多个输入参数,使用逗号分隔。表达式是函数的计算逻辑,对参数进行各种操作,并返回最终结果。

  • 一个lambda函数可以有0个或多个参数,参数间使用逗号隔开
  • 参数列表和表达式用冒号隔开
  • 上述所有代码必须在一行的一个语句中完成

下面是lambda函数的语法示例:

  1. 无参数的lambda函数:
no_arg = lambda: "Hello, world!"
print(no_arg())  # 输出结果为"Hello, world!"
  1. 单个参数的lambda函数:
square lambda x: x**2
print(square(3))  # 输出结果为9
  1. 多个参数的lambda函数:
add = lambda x, y: x + y
print(add(3, 4))  # 输出结果为7

需要注意的是,lambda函数常用于简单的函数定义,不适用于复杂的逻辑或多行语句。如果需要执行复杂逻辑,建议使用普通的函数定义方式此外,lambda函数常用于与高阶函数(如map()、filter()、reduce()等)结合使用,用于快速定义回调函数或简化代码。

总结来说,lambda函数是一种快速定义匿名函数的方式,通过简洁的语法实现了函数的快速定义和使用,适用于简单的函数逻辑和作为高阶函数的参数。

lambda函数特性

lambda函数与普通的函数相比,确实有它自己一些独特的特性。

匿名性

lambda函数是匿名函数,即没有函数名。它们通常用于一次性的操作,不需要显式定义一个函数名称。

greeting = lambda: "Hello, world!"
print(greeting())  # 输出结果为 "Hello, world!"

简洁性

lambda函数采用简洁的语法,可以在一行代码中定义函数。它们常常用于简化代码,减少不必要的函数定义。

add_two_nums = lambda x, y: x + y
print(add_two_nums(3, 4))  # 输出结果为 7

在高阶函数中的应用

lambda函数常用于与高阶函数(如map()、filter()、reduce()等)结合使用,可以快速定义回调函数或对序列元素进行处理。lambda表达式可以提供一种简洁的方法来定义函数。下面是lambda表达式在几个高阶函数中的应用示例:

  1. map(function, iterable) 使用lambda表达式将一个函数应用于可迭代对象中的每个元素,并返回一个由结果组成的新可迭代对象。
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))  # 输出:[1, 4, 9, 16, 25]
  1. filter(function, iterable) 使用lambda表达式根据条件筛选出可迭代对象中的元素,并返回一个由符合条件的元素组成的新可迭代对象。
numbers = [1, 2, 3, 4, 5]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # 输出:[2, 4]
  1. sorted(iterable, key=function) 使用lambda表达式作为关键字函数,根据指定的函数返回值对可迭代对象进行排序,并返回排序后的列表。
students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 18},
    {"name": "Charlie", "age": 22}
]
sorted_students = sorted(students, key=lambda x: x["age"])
print(sorted_students)  # 输出:[{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}]
  1. reduce(function, iterable[, initializer]) 使用lambda表达式对可迭代对象中的元素进行累计计算,按照指定的规则将前两个元素的结果与下一个元素进行计算,最终返回一个单一的结果。
from functools import reduce

numbers = [1, 2, 3, 4, 5]
sum = reduce(lambda x, y: x + y, numbers)
print(sum)  # 输出:15

lambda表达式在高阶函数中提供了一种简洁的方式来定义匿名函数,使代码更精练和易读,我们可以根据需要使用lambda表达式来定义适合特场景的函数。

总体而言,lambda函数是一种方便、简洁的函数定义方式,适用于一些简单的计算逻辑和快速的回调函数定义。它们提供了一种简化代码、提高代码可读性的方法。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

标签:定义,16,Python,函数,numbers,print,表达式,lambda
From: https://blog.51cto.com/jtime/8955740

相关文章

  • Python教程(16)——lambda表达式详解
    lambda函数介绍我们平时经常可以在Python的代码中看到一种lambda开头的这种表达式,如果没有学过Python的相关知识,可能会一脸懵逼,不清楚到底这个关键字是干嘛的,用来表示什么。实际上这个就是lambda函数。lambda函数是Python中一种特殊的匿名函数,但不仅仅只存在Python中,它允许我们......
  • 融云数智办公获 IT168「2023 年度信创卓越贡献奖」
    近期,业界知名IT垂直门户媒体 IT168 正式揭晓其年度大型评选“2023年技术卓越奖”结果,融云榜上有名。关注【融云RongCloud】,了解协同办公平台更多干货。融云数智办公作为信创领域明星产品荣获“2023年度信创卓越贡献奖”。复杂多变的世界经济环境下,技术创新依然是主旋律。人......
  • Python爬虫知识点(bs/find_all/正则表达式)
    格式输出 BeautifulSoup库  信息提取  正则表达式     ......
  • 警示:AL32UTF8字符集不是ZHS16GBK字符集的超集
    今天有客户向我咨询:数据库由ZHS16GBK字符集修改为AL32UTF8字符集,发现中文的数据中小部分出现乱码,客户认为AL32UTF8明明可以支持更多的文字,不应该出现这样的情况才对。从现象看,基本可以确认故障是字符集转换导致的,Oracle也强烈不建议做这种字符集转换的操作,幸好该客户的操作只是在......
  • Python面试题汇总
    1、一行代码实现1-100之和利用sum()函数求和sum(range(1,101))2、如何在一个函数内部修改全局变量利用global将函数内的变量指定成全局变量a=5deffn():globalaa=4fn()print(a)结果是4,不加global,则解决是53、列出5个python标准库sys:提供了不少与操作系统相关......
  • Python学生成绩管理系统
    filename='student.txt'importosdefmenu():print('--------------学生管理系统-----------')print('--------------功能菜单--------------')print('1.录入学生信息')print('2.查找学生信息')print(&......
  • Python网络编程:掌握urllib包的妙用
    在Python的世界里,处理网络请求是日常任务之一。不论是爬取网页数据,还是调用网络API,一个好用的HTTP客户端库是必不可少的。Python标准库中的urllib包就是这样一个强大的工具,它提供了一个简单的界面来与网上资源互动。本文将带你深入了解urllib包,包括它的主要模块,以及如何使用它们完......
  • Python 潮流周刊第 32 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-23-weekly以下是本期摘要:......
  • CF1621G Weighted Increasing Subsequences
    CF1621GWeightedIncreasingSubsequences你有一个长度为\(n\)的序列,定义\(a\)的一个长度为\(k\)的子序列为\(a_{i_1},a_{i_2},\dots,a_{i_k}\)。由此,我们不难发现,\(a\)的一个长度为\(k\)的子序列为上升子序列,当且仅当\(\forallj\in[1,k)\),\(a_{i_j}<a_{i_{j+1}}\)......
  • 每日导数16
    含参问题常用三种思想已知函数\(f(x)=ax\lnx-x+1\),若\(x\in(1,+\infty)\)时,\(f(x)>0\),求\(a\)的取值范围解法一:直接讨论\(f^{\prime}(x)=a(\lnx+1)-1\),\(f^{\prime}(x)\)为增函数,并且\(f^{\prime}(x)>f^{\prime}(1)=a-1\)当\(a\geq1\)时,\(f^{\prime}(x)>0\)即\......