博客
关于我
Python中特殊函数和表达式 filter,map,reduce,lambda
阅读量:798 次
发布时间:2023-03-09

本文共 1520 字,大约阅读时间需要 5 分钟。

Python中的Filter、Map、Reduce与Lambda函数

在Python编程中,filter(过滤)、map(映射)、reduce(归纳)以及lambda(匿名函数)是非常实用的高阶函数,它们能够帮助我们更高效地处理数据。以下将从这些函数的基本原理到实际应用案例进行详细解析。

1. Filter(过滤)

Filter函数的作用是根据提供的函数逻辑对序列中的项进行筛选。传入的函数可以是任意函数或None。如果传入的是函数,则按照函数返回值是否为True来保留或剔除对应的序列项。如果传入None,则默认筛选出True值的项目。

示例代码:

def findPositiveNum(num):    return num > 0list = {2, 1, 3, -2, 0, 12, 5, -9}print(list(filter(findPositiveNum, list)))

返回结果:

[1, 2, 3, 5, 12]

功能解释:

  • Filter函数的核心在于接收一个函数和一个序列,然后对序列中的每一个项应用函数,保留返回值为True的项目。
  • 如果序列是字符串或元组,返回类型将保持不变,否则返回列表。

2. Map(映射)

Map函数的主要作用是将序列中的每一个项目传递给指定的函数,然后返回结果组成的新序列。如果多个序列被传入,函数将接收这些序列对应位置的项。如果函数为None,则直接返回序列本身。

示例代码:

def multiValue(num):    return num ** 2list1 = {1, 3, 5, 7, 9, 11}print(list(map(multiValue, list1)))

返回结果:

[1, 9, 25, 49, 81, 121]

功能解释:

  • Map函数的功能非常灵活,常用于数据转换或处理,例如将字符串列表转换为字典或其他数据类型。
  • 如果多个序列被传入,函数将返回一个由多个序列对应位置项组成的元组或列表。

3. Reduce(归纳)

Reduce函数的作用是将序列中的项逐步传递给一个二元函数,累积处理,最终返回一个单一值。函数将从序列的第一个项目开始,依次处理后续项目。如果初始值被传入,则作为初始值使用。

示例代码:

def addNum(num1, num2):    return num1 + num2list2 = {1, 2, 3, 4, 5, 6}print(reduce(addNum, list2))

返回结果:

21

功能解释:

  • Reduce函数的核心在于将序列中的所有项按照某种规则累积计算,最终得到一个单一的结果。
  • 如果序列为空且没有初始值,会抛出TypeError错误。

4. Lambda(匿名函数)

Lambda函数是一种无需命名的函数,可以直接在表达式中使用。它在数据处理和高阶函数中尤为常见,能够简化代码并提高效率。

示例代码:

addnum = lambda x, y: x + yprint(addnum(1, 2))multiNum = lambda x: x ** 2print(multiNum(5))

返回结果:

3325

功能解释:

  • Lambda函数的优势在于它能够在不命名的情况下定义函数,简化了代码结构。
  • 传入多个序列时,可以同时处理多个数据源,提高处理效率。

总结

以上四个函数在Python中各有特点,filter用于筛选,map用于映射,reduce用于归纳,lambda用于匿名函数定义。它们共同构成了Python处理数据的强大能力。在实际开发中,可以根据需求灵活运用这些函数,以提高代码的可读性和效率。

转载地址:http://rplfk.baihongyu.com/

你可能感兴趣的文章
python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
查看>>
Python: AES加密与解密
查看>>
Python: Range() 最大尺寸;动态的还是静态的?
查看>>
Python: Windows下用 multiprocessing 的深坑
查看>>
python:Could not find platform independent libraries <prefix>解决方法
查看>>
Python:datetime tzinfo 时区名称文档
查看>>
Python:deepcopy(list) vs new_list = old_list[:]
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
查看>>
Python:TypeError:无法连接“str“和“int“对象
查看>>
Python:XPath 在 ElementTree 中不可用
查看>>
Python:从 FTP 服务器下载文件
查看>>
python:从列表中创建元组列表
查看>>
Python:从嵌套列表中删除重复项
查看>>
Python:从间隔映射到值
查看>>
Python:使用 shell=False 的子进程调用不起作用
查看>>
Python:修改 PATH 环境变量的平台无关方式
查看>>
Python:假与 0
查看>>
Python:函数使用
查看>>