python学习中的reduce()函数和lambda表达式
来源:互联网 发布:什么是java系统类库 编辑:程序博客网 时间:2024/05/16 07:12
reduce()函数和lambda表达式常常能够言简意赅的表达我们想要的公式,但是问题也随之而来:即表达式尝尝难以捉摸,看似高深莫测。这里,我们简单地探讨一下这两个表达式。如果后续学习中再次遇到这个问题,会继续补充。同时,也恳请博友指教和补充,大家共同进步。
首先,我们来探讨一下reduce()函数。
python的reduce()内建函数是一个二元操作函数,用来将一个数据集合(链表,元组等)中的所有数据进行function函数操作:用传给reduce()的函数 function()(必须是一个二元操作函数)对数据集合中的第1,2个数据进行操作,得到的结果再与第三个数据使用function()函数运算。如此迭代,直到最后得到一个结果。
reduce()的函数原型是: reduce(function(), iterable[, initializer]),返回值是一个单值;
def add(x,y): return x+ysum = reduce(add,[1,2,3,4,5,6,7,8,9,10])print(sum)结果为55
注:在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce。
深一步:参考来自:http://www.68idc.cn/help/jiabenmake/python/20150310262907.html
l = []def add(x,y): l.append((x,y)) end = x + y return endsum = reduce(add,[1,2,3,4,5,6,7,8,9,10])print(sum)print(l)
输出结果为:
reduce(function(),data) 函数对作为其参数的函数function()是有要求的,要求这个函数function()能接受两个参数。第一个参数的值是前期计算积累的值,而第二个参数的值是 reduce() 函数参数中的data序列的下一个元素。其实 reduce 函数中还有第三个可选的参数初始值,如果这个参数为空则初始值默认为序列的第一个元素,所以上面可以看到第一次调用这个函数是以序列的第一个和第二个元素作为参数的。最终,最后一次调用返回的值作为 reduce 函数的返回值。
其次,我们来探讨学习一下lambda表达式。
表达式 = lambda [parameters,即参数] : [func,即执行的运算过程]
接着,我们将两者混合使用,以更清楚地明白其运算过程:
range(1,7)=[1,2,3,4,5,6,7]。每次传递两个参数给lmd_f,同时lmd_f返回一个值,该返回值作为下一次lmd_f执行运算的第一个参数(第一次时,默认第一个参数由range的第一个参数提供)。
- python学习中的reduce()函数和lambda表达式
- python中reduce函数和lambda表达式的学习
- Python lambda和reduce函数
- python中的函数:filter/map/reduce/lambda
- Python 里面的reduce函数和lambda
- python中的map函数,reduce函数,lambda函数
- python的lambda表达式 内建函数filter map reduce
- python中的map,reduce,filter,sorted,lambda表达式
- python中的lambda匿名函数以及针对序列的内建函数map、filter和reduce
- python 中的 filter, lambda, map, reduce 内置函数
- python中的函数编程:lambda,apply, filter,map,reduce
- python 中的 filter, lambda, map, reduce 内置函数
- (转)Python中的map,reduce,filter,lambda内置函数
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- python学习系列(七)函数和Lambda表达式
- Python函数式编程学习:lambda, map, reduce, filter
- Python函数式编程学习:lambda, map, reduce, filter
- 浏览器插件开发-纯属兴趣
- [LeetCode] 564. Find the Closest Palindrome 深入浅出讲解和代码示例
- leetcode题解-86. Partition List
- Java对象、对象引用关系及参数传递讨论
- Free, simple code to find out what SQL statements are running slow in SQL Server right now
- python学习中的reduce()函数和lambda表达式
- Android Hal层简要分析
- HTML标签
- Spring-@Autowired注解、@Resource注解和@Service注解
- Java消息中间件--JMS规范
- 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)
- Spotlight on Unix 监控Linux服务器的安装与使用
- Spring的七大模块,以及每个模块的作用
- 238. Product of Array Except Self(Java)