Python高阶函数,map、reduce、filter、sorted详解
Python是一门高级编程语言,支持函数式编程。高阶函数是函数式编程的核心概念之一,它可以让开发者更高效地编写代码。Python中,高阶函数包括map、reduce、filter和sorted。本文将详细介绍这些函数。
一、map函数
map函数可以将一个列表或者元组中的每个元素经过指定的函数转换成一个新的列表。其语法如下:
map(function, iterable, ...)
其中,function是转换函数,iterable是要转换的列表或者元组。如果有多个参数,则function必须可以接受相应个数的参数,每个参数对应一个iterable中的元素。map函数返回的是一个迭代器,可以通过list()函数将其转换成列表。
例如,下面的代码将一个列表中的每个元素都平方,并将结果存储到一个新的列表中:
lst = [1, 2, 3, 4, 5]
square_lst = list(map(lambda x: x**2, lst))
print(square_lst)
输出结果为:[1, 4, 9, 16, 25]
另外,map函数也可以用于多个列表的元素相加等操作。例如,下面的代码将两个列表中的元素相加,并将结果存储到一个新的列表中:
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
sum_lst = list(map(lambda x, y: x + y, lst1, lst2))
print(sum_lst)
输出结果为:[5, 7, 9]
二、reduce函数
reduce函数可以将一个列表或者元组中的所有元素通过指定的函数进行累积计算。其语法如下:
reduce(function, iterable[, initializer])
其中,function是计算函数,iterable是要计算的列表或者元组,initializer是初始值。reduce函数将会计算所有的元素,调用function函数并将计算结果和下一个元素作为参数传入,累积计算出最终结果。 如果指定了initializer,则使用initializer作为初始值,否则使用iterable中的 个元素作为初始值。
例如,下面的代码将计算一个列表中所有元素的和:
from functools import reduce
lst = [1, 2, 3, 4, 5]
sum_lst = reduce(lambda x, y: x + y, lst)
print(sum_lst)
输出结果为:15
另外,reduce函数也可用于计算列表中元素的乘积等操作。例如,下面的代码将计算一个列表中所有元素的乘积:
from functools import reduce
lst = [1, 2, 3, 4]
product_lst = reduce(lambda x, y: x * y, lst)
print(product_lst)
输出结果为:24
三、filter函数
filter函数可以对一个列表或者元组中的元素进行过滤操作,将符合条件的元素筛选出来存储到一个新的列表中。其语法如下:
filter(function, iterable)
其中,function是过滤函数,iterable是要过滤的列表或者元组。filter函数返回的是一个迭代器,可以通过list()函数将其转换成列表。
例如,下面的代码将过滤一个列表中的偶数元素:
lst = [1, 2, 3, 4, 5, 6]
even_lst = list(filter(lambda x: x % 2 == 0, lst))
print(even_lst)
输出结果为:[2, 4, 6]
另外,filter函数也可以用于过滤出长度小于等于3的字符串等操作。例如,下面的代码将过滤出长度小于等于3的字符串:
lst = ['python', 'java', 'c', 'ruby', 'javascript']
short_lst = list(filter(lambda x: len(x) <= 3, lst))
print(short_lst)
输出结果为:['c']
四、sorted函数
sorted函数可以对一个列表或者元组中的元素进行排序操作,并返回一个新的已排序的列表。其语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是要排序的列表或者元组,key是排序函数,默认为None,表示使用默认的排序规则,reverse表示是否逆序排序,默认为False。
例如,下面的代码将对一个列表中的元素进行排序:
lst = [6, 3, 2, 7, 5, 4, 8, 1]
sorted_lst = sorted(lst)
print(sorted_lst)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8]
另外,如果要对一个字典中的元素进行排序操作,可以使用lambda表达式指定排序键。例如,下面的代码将对一个字典中的元素按照值进行排序:
dct = {'a': 3, 'b': 1, 'c': 2, 'd': 4}
sorted_dct_lst = sorted(dct.items(), key=lambda x: x[1])
print(sorted_dct_lst)
输出结果为:[('b', 1), ('c', 2), ('a', 3), ('d', 4)]
以上就是Python中的四个高阶函数map、reduce、filter和sorted的详解。这几个函数都极大地提高了Python开发者的编程效率,值得开发者深入掌握。
