Python函数式编程核心工具详解:map、filter、reduce与zip
本文深入解析Python中的函数式编程核心工具。详细阐述map、filter、reduce、zip及sorted函数的定义、参数含义与使用场景,结合具体代码示例展示如何实现元素映射、条件过滤、累积计算、序列打包及自定义排序,帮助开发者掌握高效的数据处理技巧。
Python函数式编程目录
目录
- map
- filter
- reduce
- zip
- sorted
map函数:元素映射处理
在Python函数式编程中,map() 是最基础且常用的工具之一。它允许我们将一个指定的函数应用到可迭代对象的每一个元素上,从而生成一个新的结果序列。
在使用 map() 函数时,第一个参数 function 代表要执行的操作,它可以是Python内置函数、用户自定义的函数,或者是 lambda 匿名函数;第二个参数 iterable 则表示一个或多个可迭代对象,例如列表、字符串或元组等。map() 的核心作用是对 iterable 中的每个元素依次调用指定的 function,并最终返回一个 map 对象,该对象包含了处理后的所有结果。
listDemo = [1, 2, 3, 4, 5]
new_list = map(lambda x: x * 2, listDemo)
print(list(new_list))
filter函数:数据筛选过滤
filter
filter() 函数主要用于数据筛选。它接收两个参数:function 和 iterable。其工作原理是遍历 iterable 中的每一个元素,并将该元素作为参数传递给 function 进行判断。如果 function 返回 True,则该元素被保留;如果返回 False,则被过滤掉。最终,filter() 会返回一个由所有通过判断的元素组成的新的可迭代集合。
listDemo = [1, 2, 3, 4, 5]
new_list = filter(lambda x: x % 2 == 0, listDemo)
print(list(new_list))
reduce函数:累积计算操作
reduce
reduce() 函数通常用于对集合执行累积操作,例如求和或求积。其基本语法格式为: reduce(function, iterable) 需要注意的是,reduce 位于 functools 模块中,使用前需导入。
import functools
listDemo = [1, 2, 3, 4, 5]
product = functools.reduce(lambda x, y: x * y, listDemo)
print(product)
zip与sorted函数:序列打包与排序
zip
>>>a = [1,2,3]
>>>b = [4,5,6]
>>>c = [4,5,6,7,8]
>>>zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>>zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>>zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
sorted
>>> L=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(L, key=lambda x:x[1]) # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(students, key=lambda s: s[2]) # 按年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
以上就是浅析python函数式编程的详细内容,更多关于python函数式编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









