博客
关于我
Python中特殊函数和表达式 filter,map,reduce,lambda
阅读量:797 次
发布时间: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/

你可能感兴趣的文章
python中del函数的垃圾回收
查看>>
Python中DrissionPage的详细解析与实战
查看>>
python中enumerate、变量类型转换
查看>>
python中execute是啥_python – 为什么“c.execute(…)”打破循环?
查看>>
python中exit和break区别_Python中exit()和sys.exit()之间的区别
查看>>
python中h5的用法
查看>>
python中http协议编程_HTTP编程
查看>>
python中import os_Python:相对导入与绝对导入(import)、os.path、__file__
查看>>
python中is和==操作符
查看>>
Python中range对象的使用以及打印九九乘法表
查看>>
Python中set.discard和set.remove方法之间的运行时差异?
查看>>
python中tkinter中value_输入字段中的python Tkinter get()值
查看>>
Python中wx.FlexGridSizer
查看>>
Python中xPath技术和BeautifulSoup的使用
查看>>
python中yield的用法详解——最简单,最清晰的解释
查看>>
python中‘set.intersection()‘的算法是什么?
查看>>
Python中一个图形中的多个绘图
查看>>
python中一个好的持久同步队列
查看>>
Python中不准确的对数
查看>>
python中什么是实例方法_在Python中创建实例方法对象的不同方法
查看>>