Python中的lambda表达式:简单又强大的函数实现方式
Python中的lambda表达式是一种简单又强大的函数实现方式,它可以在一行代码中创建一个匿名函数,使得代码更加简洁和易于理解。本文将介绍lambda表达式的基本语法和应用场景,并给出一些实例演示。
lambda表达式的基本语法
lambda表达式的基本语法如下:
lambda arguments: expression
其中,arguments表示函数参数,可以是任意个,也可以为空;expression表示函数执行体,一般是一个表达式,也可以是一个语句块。这个lambda表达式就等同于一个函数,执行结果就是函数的返回值。
需要注意的是,lambda表达式只能包含一个表达式,而不能包含多条语句,否则会导致语法错误。
lambda表达式的应用场景
lambda表达式通常用于需要频繁调用的简单函数,比如排序、过滤、映射等操作。由于lambda表达式可以直接定义在代码中,因此可以避免创建不必要的函数对象,提高代码的执行效率。
下面给出一些lambda表达式的常见应用场景:
1. List排序
lambda表达式可以通过sorted函数对List进行排序,例如:
lst = [5, 1, 3, 9, 7]
sorted_lst = sorted(lst, key=lambda x: x)
print(sorted_lst)
运行结果为:
[1, 3, 5, 7, 9]
这里的key参数表示排序的依据,lambda表达式表示按照元素大小进行排序。
2. List筛选
lambda表达式可以通过filter函数对List进行筛选,例如:
lst = [5, 1, 3, 9, 7]
filtered_lst = filter(lambda x: x > 5, lst)
print(list(filtered_lst))
运行结果为:
[9, 7]
这里的lambda表达式表示筛选出元素大于5的项。
3. List映射
lambda表达式可以通过map函数对List进行映射,例如:
lst = [5, 1, 3, 9, 7]
mapped_lst = map(lambda x: x * 2, lst)
print(list(mapped_lst))
运行结果为:
[10, 2, 6, 18, 14]
这里的lambda表达式表示将每个元素乘以2。
4. 函数参数
lambda表达式可以作为函数的参数,例如:
def add(a, b, func):
return func(a) + func(b)
result = add(3, -4, lambda x: abs(x))
print(result)
运行结果为:
7
这里的lambda表达式作为函数参数,表示将函数的参数取绝对值,然后再进行加法操作。
5. 条件表达式
lambda表达式可以作为条件表达式,例如:
result = "even" if lambda x: x % 2 == 0 else "odd"
print(result)
运行结果为:
<function <lambda> at 0x7f2a06e93700>
这里的lambda表达式返回True或False,用来判断一个数是偶数还是奇数,然后通过条件表达式输出相应的结果。
实例演示
下面给出一些lambda表达式的实例演示:
1. 将字符串列表按照首字母排序
lst = ['apple', 'banana', 'grape', 'orange']
sorted_lst = sorted(lst, key=lambda x: x[0])
print(sorted_lst)
运行结果为:
['apple', 'banana', 'grape', 'orange']
2. 筛选列表中的偶数
lst = [3, 7, 2, 8, 5, 9, 4]
filtered_lst = filter(lambda x: x % 2 == 0, lst)
print(list(filtered_lst))
运行结果为:
[2, 8, 4]
3. 将列表中的元素都取绝对值
lst = [-3, 7, -2, 8, -5, 9, 4]
mapped_lst = map(lambda x: abs(x), lst)
print(list(mapped_lst))
运行结果为:
[3, 7, 2, 8, 5, 9, 4]
4. 求平均数
lst = [3, 7, 2, 8, 5, 9, 4]
average = lambda lst: sum(lst) / len(lst)
print(average(lst))
运行结果为:
5.0
5. 判断字符串是否为数字
string = "123"
is_number = lambda string: string.isdigit()
print(is_number(string))
运行结果为:
True
