Python 高阶映射和过滤函数

  • Post category:Python

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中处理和筛选数据时非常实用的工具,掌握它们可以让我们的代码更加简洁高效。