Python内置的高阶映射和过滤函数是一种功能强大的工具,可以快速高效地进行数据处理和筛选。本篇文章将详细讲解 Python 高阶映射和过滤函数的使用方法,包括map()、filter()、reduce()三个函数。
map()函数
map()函数是Python内置的一种“映射”函数,可以对一个序列中的每个元素执行同一个操作,从而得到一个新的序列,格式如下:
map(function, iterable, ...)
其中,function
是一个函数,iterable
是一个可迭代对象。该函数会将iterable
中的每个元素作为参数传递给function
进行处理,返回一个新的可迭代对象。
示例1:将列表中的每个元素都乘以2:
lst = [1, 2, 3, 4, 5]
result_lst = list(map(lambda x: x*2, lst))
print(result_lst)
输出结果为:
[2, 4, 6, 8, 10]
示例2:将字符串列表中的每个字符串首字母变为大写:
lst = ['hello', 'world', 'python']
result_lst = list(map(str.capitalize, lst))
print(result_lst)
输出结果为:
['Hello', 'World', 'Python']
filter()函数
filter()函数是Python内置的一种“过滤”函数,可以对一个序列中的元素进行筛选,从而得到一个新的序列,格式如下:
filter(function, iterable)
其中,function
是一个函数,iterable
是一个可迭代对象。该函数会将iterable
中的每个元素作为参数传递给function
进行处理,返回值为True的元素留下来,组成一个新的可迭代对象。
示例1:筛选出列表中所有的偶数:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result_lst = list(filter(lambda x: x%2 == 0, lst))
print(result_lst)
输出结果为:
[2, 4, 6, 8, 10]
示例2:筛选出数字字符串列表中所有能被3整除的元素:
lst = ['3', '6', '9', '12', '15']
result_lst = list(filter(lambda x: int(x)%3 == 0, lst))
print(result_lst)
输出结果为:
['3', '6', '9', '12', '15']
reduce()函数
reduce()函数是Python内置的一种“归约”函数,可以对一个序列中的元素进行缩减操作,从而得到一个单一的结果,格式如下:
reduce(function, iterable[, initializer])
其中,function
是一个函数,iterable
是一个可迭代对象。函数function
必须有两个参数,每次将iterable
中的两个元素传入function
进行处理,返回一个结果,该结果会继续与下一个元素传入function
进行处理,直到处理完iterable
中的所有元素,得到最终的结果。
示例1:计算列表中所有元素的和:
from functools import reduce
lst = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x+y, lst)
print(result)
输出结果为:
15
示例2:将字符串列表中所有字符串拼接成一个大字符串:
from functools import reduce
lst = ['hello', 'world', 'python']
result = reduce(lambda x, y: x+y, lst)
print(result)
输出结果为:
helloworldpython
以上就是Python高阶映射和过滤函数的详细攻略,包括map()、filter()、reduce()三个函数的使用方法和示例。这些函数是Python中处理和筛选数据时非常实用的工具,掌握它们可以让我们的代码更加简洁高效。