Python高级函数:学习lambda表达式和map/reduce/filter等高级函数
在Python中,有一些高级函数,包括lambda表达式、map、reduce和filter等,这些函数可以让开发人员更灵活、高效的编写代码。下面就来简单介绍一下这些高级函数的用法。
1. lambda表达式
lambda表达式也称为匿名函数,它是一个很小的函数,不需要函数名,可以直接定义在其他函数的参数中使用。lambda是Python内置的一个函数,它可以用来快速定义简单的函数。其语法形式如下:
lambda 参数列表:表达式
例如,定义一个计算平方的lambda表达式可以如下所示:
square = lambda x: x * x
2. map函数
map函数接收两个参数,一个是函数,一个是序列,这个函数作用于序列中的每一个元素。map函数的返回值是一个可迭代的map对象,可以通过list()将其转换为列表。例如,我们可以定义一个函数来计算一个列表中每个元素的平方,然后使用map函数将这个函数应用到列表中的每个元素,返回一个新的平方值的列表。
def square(x):
return x*x
nums = [1, 2, 3, 4, 5]
squares = list(map(square, nums))
print(squares) # [1, 4, 9, 16, 25]
也可以使用lambda表达式来实现上述功能:
nums = [1, 2, 3, 4, 5]
squares = list(map(lambda x:x*x, nums))
print(squares) # [1, 4, 9, 16, 25]
3. filter函数
filter函数接收两个参数,一个是函数,一个是序列,这个函数作用于序列中的每一个元素,用来过滤出符合条件的元素。与map函数类似,filter函数的返回值也是一个可迭代的filter对象,可以通过list()将其转换为列表。例如,我们可以定义一个函数来检查一个数字是否是奇数,然后使用filter函数将这个函数应用到列表中的每个元素,返回一个新的奇数的列表。
def is_odd(x):
return x % 2 == 1
nums = [1, 2, 3, 4, 5]
odds = list(filter(is_odd, nums))
print(odds) # [1, 3, 5]
也可以使用lambda表达式来实现上述功能:
nums = [1, 2, 3, 4, 5]
odds = list(filter(lambda x:x%2==1, nums))
print(odds) # [1, 3, 5]
4. reduce函数
reduce函数接收两个参数,一个是函数,一个是序列,这个函数作用于序列中的每一个元素,不断将结果累加,最终返回一个单独的结果。Python 3已经将reduce函数移到了functools模块中。例如,我们可以定义一个函数来计算一个数字列表中的和,然后使用reduce函数将这个函数应用到列表中的每个元素,返回列表元素的和。
from functools import reduce
def add(x, y):
return x + y
nums = [1, 2, 3, 4, 5]
total = reduce(add, nums) # total = 1 + 2 + 3 + 4 + 5 = 15
print(total)
也可以使用lambda表达式来实现上述功能:
nums = [1, 2, 3, 4, 5]
total = reduce(lambda x, y:x+y, nums)
print(total)
总结
上述介绍了Python中的几个高级函数,这些函数可以让开发人员更灵活、高效的编写代码。需要注意的是,虽然使用lambda表达式能够节省代码量,但是过多使用可能会影响代码的可读性和可维护性,所以在代码编写中,需要权衡优缺点,选择合适的编写方式。
