首先,Python中有个内置的函数reduce(),它可以迭代序列并对它的成员归约为一个单一的总和。reduce的工作原理为,将列表中的一对乘积相乘并返回乘积。接着,将这个乘积和列表中的下一个数字相乘,一直执行到列表中没有剩余对象。reduce函数的语法如下:
reduce(function, sequence[, initial])
其中,参数function
是一个二元函数,有两个参数x,y,将通过x,y的操作处理列表的内容;参数sequence
是要归约的序列,如果传入参数initial
,则序列中的第一次迭代就是将initial
作为第一个参数调用函数function()
的计算结果。下面是两个示例。
示例1:用reduce()函数求1~10的累加和。
from functools import reduce # 在Python3中需要导入reduce函数库
nums = range(1, 11) # 1~10的序列
sum = reduce(lambda x, y: x + y, nums) # 通过lambda函数求和
print(sum) # 输出55
示例2:用reduce()函数求5的阶乘。
from functools import reduce # 在Python3中需要导入reduce函数库
num = 5 # 要求阶乘的数
factorial = reduce(lambda x, y: x * y, range(1, num+1)) # 通过lambda函数求阶乘
print(factorial) # 输出120
以上两个示例演示了如何使用reduce()函数来归约序列。在编写函数时需要注意,在lambda函数中要按照要求进行参数传递和返回结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python reduce()归约数据集 - Python技术站