Python高级函数:lambda表达式与map、filter、reduce函数
在Python中有三个常用的高阶函数,他们分别是map,filter和reduce函数。这些函数的使用可以帮助我们写出简单、优雅的代码并节省时间和精力。
同时,在Python中也有一个非常强大的lambda表达式,它可以帮助我们更方便地使用这些高级函数。
下面我们将分别介绍这些高级函数和lambda表达式。
1.map函数
map函数可以对可迭代对象中的每个元素都应用一个函数,然后将结果作为一个新的列表返回。map函数的语法为:
map(func, iterable, ...)
其中func是一个函数,iterable是一个可迭代对象。
举例说明:
我们希望对一个列表中的每个元素进行平方运算,并得到一个新的列表。
使用普通的循环:
lst = [1, 2, 3, 4, 5]
new_lst = []
for i in lst:
new_lst.append(i ** 2)
print(new_lst)
使用map函数:
lst = [1, 2, 3, 4, 5] new_lst = list(map(lambda x: x ** 2, lst)) print(new_lst)
map函数可以帮助我们更简便地实现对列表的操作。
2.filter函数
filter函数可以根据给定的条件过滤可迭代对象中的元素并返回一个新的可迭代对象。该函数的语法为:
filter(function, iterable)
其中function是一个返回布尔值的函数,表示将哪些元素保留下来。
举例说明:
我们希望从一个列表中筛选出所有的偶数。
使用普通的循环:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = []
for i in lst:
if i % 2 == 0:
new_lst.append(i)
print(new_lst)
使用filter函数:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] new_lst = list(filter(lambda x: x % 2 == 0, lst)) print(new_lst)
3.reduce函数
reduce函数可以对一个序列中的元素进行累积(使用给定的函数)。该函数的语法为:
reduce(function, iterable[, initializer])
其中function是一个带有两个参数的函数,表示对序列进行操作的函数。
举例说明:
我们希望求出一个列表中所有元素的和。
使用普通的循环:
lst = [1, 2, 3, 4, 5]
res = 0
for i in lst:
res += i
print(res)
使用reduce函数:
from functools import reduce lst = [1, 2, 3, 4, 5] res = reduce(lambda x, y: x + y, lst) print(res)
reduce函数可以帮助我们更方便地实现累计操作。
4.lambda表达式
lambda表达式是Python中的一个工具,可以快速创建一个函数对象。 lambda表达式的语法为:
lambda arguments: expression
其中arguments表示参数列表,expression表示表达式或函数体。
举例说明:
我们希望编写一个函数,将一个数平方后加1。
使用普通的函数:
def sqr_plus_one(x):
return x ** 2 + 1
print(sqr_plus_one(2))
使用lambda表达式:
sqr_plus_one = lambda x: x ** 2 + 1 print(sqr_plus_one(2))
lambda表达式可以帮助我们在不需要命名函数的情况下快速创建一个函数对象。
结论
map、filter、reduce和lambda表达式是Python中的一些非常有用的高级函数和工具,它们可以帮助我们快速地编写简洁、高效的代码。熟练掌握这些工具是Python开发中的一项关键技能。
