python学习中的reduce()函数和lambda表达式
2017-07-13 16:03
330 查看
reduce()函数和lambda表达式常常能够言简意赅的表达我们想要的公式,但是问题也随之而来:即表达式尝尝难以捉摸,看似高深莫测。这里,我们简单地探讨一下这两个表达式。如果后续学习中再次遇到这个问题,会继续补充。同时,也恳请博友指教和补充,大家共同进步。
首先,我们来探讨一下reduce()函数。
python的reduce()内建函数是一个二元操作函数,用来将一个数据集合(链表,元组等)中的所有数据进行function函数操作:用传给reduce()的函数
function()(必须是一个二元操作函数)对数据集合中的第1,2个数据进行操作,得到的结果再与第三个数据使用function()函数运算。如此迭代,直到最后得到一个结果。
reduce()的函数原型是: reduce(function(), iterable[, initializer]),返回值是一个单值;
注:在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import
reduce。
深一步:参考来自:http://www.68idc.cn/help/jiabenmake/python/20150310262907.html
输出结果为:
reduce(function(),data)
函数对作为其参数的函数function()是有要求的,要求这个函数function()能接受两个参数。第一个参数的值是前期计算积累的值,而第二个参数的值是 reduce() 函数参数中的data序列的下一个元素。其实 reduce 函数中还有第三个可选的参数初始值,如果这个参数为空则初始值默认为序列的第一个元素,所以上面可以看到第一次调用这个函数是以序列的第一个和第二个元素作为参数的。最终,最后一次调用返回的值作为
reduce 函数的返回值。
其次,我们来探讨学习一下lambda表达式。
表达式 = lambda [parame
4000
ters,即参数] : [func,即执行的运算过程]
接着,我们将两者混合使用,以更清楚地明白其运算过程:
range(1,7)=[1,2,3,4,5,6,7]。每次传递两个参数给lmd_f,同时lmd_f返回一个值,该返回值作为下一次lmd_f执行运算的第一个参数(第一次时,默认第一个参数由range的第一个参数提供)。
首先,我们来探讨一下reduce()函数。
python的reduce()内建函数是一个二元操作函数,用来将一个数据集合(链表,元组等)中的所有数据进行function函数操作:用传给reduce()的函数
function()(必须是一个二元操作函数)对数据集合中的第1,2个数据进行操作,得到的结果再与第三个数据使用function()函数运算。如此迭代,直到最后得到一个结果。
reduce()的函数原型是: reduce(function(), iterable[, initializer]),返回值是一个单值;
def add(x,y): return x+y sum = 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 end sum = 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 [parame
4000
ters,即参数] : [func,即执行的运算过程]
接着,我们将两者混合使用,以更清楚地明白其运算过程:
range(1,7)=[1,2,3,4,5,6,7]。每次传递两个参数给lmd_f,同时lmd_f返回一个值,该返回值作为下一次lmd_f执行运算的第一个参数(第一次时,默认第一个参数由range的第一个参数提供)。
相关文章推荐
- python学习笔记,序列、函数、lambda表达式
- Python学习——reduce()函数的用法
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
- python学习系列(七)函数和Lambda表达式
- Python函数Map()和reduce()的区别和第二天学习Python的心得体会
- Python小白学习之路(十五)—【map()函数】【filter()函数】【reduce()函数】
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Learn Python The Hard Way学习(21) - 函数可以返回信息
- Python学习笔记(5):函数
- Python 学习笔记(一)语句,变量,函数
- Learn Python The Hard Way学习(19) - 函数和变量
- Python函数学习笔记
- Python学习:def函数的定义、使用及参数传递
- Python模块学习之os常用函数
- Python学习笔记总结(二):函数和模块
- python的几个内建函数:apply(),filter(),map(),reduce()
- Python学习笔记整理(十二)Python的函数
- python学习--函数使用