Python开发实例 – Lambda表达式
Python Development Examples – Lambda expression
By Jackson@ML
普通的函数我们很常用,只需要通过 def 声明,并且产生一段代码,包含(但不限于)参数,返回(或不返回)一个值,都可以编写得顺理成章。
而非命名函数(即匿名函数)又如何呢?本文简要介绍lambda表达式在函数应用中的实例,以推广这个Python编程中简洁高效的用法。
1. 命名函数示例
第一个任务,需要编写一个加法函数,加一行注释在前面,如下方代码:
# a function that takes summary of two parameters
def addition(x, y):
return x + y
print("x + y = ", addition(3, 6))
最后打印输出两个数字3和6的相加结果。执行结果如下图所示:
执行成功!
像这样的函数如果越来越复杂,那么写起来会有点费神。
想象一下,使用lambda表达式,是什么感觉。
2. 普通函数与Lambda表达式比较
1) 示例一,加法的lambda表达式
同样的加法,需要输出两个值的结果,使用lambda表达式,代码如下:
# a lambda expression sample
sum = lambda x, y : x + y
print("x + y = ", sum(3, 6))
看起来,代码简洁了很多,执行结果如下图所示:
上方原函数代码被注释掉,下方是lambda表达式代码。看起来,lambda表达式执行结果也完全一致, x + y = 9。非常棒!
2) 示例二:过滤偶数的列表序列
不难看出,lambda表达式的特点,具有上述的简洁性(代码简洁)、匿名性(没有声明函数名称);除此之外,还具有其它特性吗?
还有内联性。让我们进一步研究一下。
现在,完成第二个任务,要求从1至10的数字列表中,过滤出偶数并打印输出。
普通函数代码分为以下几部分,即创建函数判断是否为偶数,进而用for循环遍历过滤出符合偶数条件的数字序列并打印输出,代码如下所示:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# a function to verify if a number is even.
def is_even_number(number):
return number % 2 == 0
# a for loop to check and print out the even numbers
for i in range(len(lst)):
if is_even_number(lst[i]):
print("even number is:", lst[i])
执行结果如下图所示:
看到执行效果后,我们转向用lambda表达式实现。
1) 首先,仍然将一个数字列表赋给lst变量,这次是1至12,包含十二个数字;
2) 其次,使用lambda表达式来判断是否为偶数;并且,使用filter函数将符合条件的数字从列表中过滤出来;
3) 最后,将该数字序列转换成列表格式 – list, 并且用print()函数打印输出。
代码如下所示:
# create a list consisting of numbers
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# The filter function contains two arguments
# the first argument is a lambda function
# and the second argument is a list of numbers
even_number = filter(lambda x: x % 2 == 0, lst)
# convert the even_number variables to a list
print(list(even_number))
执行结果如下图所示:
输出的偶数列表为:[2, 4, 6, 8, 10, 12],圆满完成任务!
很明显,这次主要代码只有三行!但是完成了传统函数需要六行代码才能完成的任务。
这就是lambda表达式的优势,希望在以后的编程中有更多的体会分享给大家。也希望读者能够从中受益。
技术好文陆续推出,敬请关注。
您的认可,我的动力! 😊
相关阅读
- Python编程技巧 - 编写单行if条件语句
- Python编程技巧 - format格式化文本
- Python编程技巧 - 使用正则表达式
- 2024最新版Python 3.12.1安装使用指南
- 2024最新版PyCharm安装使用指南