python-内置函数reduce
一、描述
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
二、语法
reduce() 函数语法:
reduce(function, iterable[, initializer])
三、参数
- function -- 函数,有两个参数
- iterable -- 可迭代对象
- initializer -- 可选,初始参数
四、返回值
返回函数计算结果。
五、实例
""" 需求:计算列表之和、积 """ def multi(x, y): return x * y def add(x, y): return x + y def reduce_test(func, array, init=None): if init is None: res = array.pop(0) else: res = init for i in array: res = func(res, i) return res # num_list = [1, 2, 3, 100] print("使用自定义函数实现计算列表之和、积") num_list1 = [12, 3, 4, 1] print("计算列表之和:", reduce_test(add, num_list1)) num_list1 = [12, 3, 4, 1] print("计算列表之和,基数为2:", reduce_test(add, num_list1,2)) num_list1 = [12, 3, 4, 1] print("计算列表之积:", reduce_test(multi, num_list1)) num_list1 = [12, 3, 4, 1] print("计算列表之积,基数2:", reduce_test(multi, num_list1, 2)) print("-"*40) print("使用自定义函数和匿名函数结合实现计算列表之和、积") num_list2 = [12, 3, 4, 1] print("计算列表之和:", reduce_test(lambda x, y: x + y, num_list2)) num_list2 = [12, 3, 4, 1] print("计算列表之和,基数为2:", reduce_test(lambda x, y: x + y, num_list2, 2)) num_list2 = [12, 3, 4, 1] print("计算列表之积:", reduce_test(lambda x, y: x * y, num_list2)) num_list2 = [12, 3, 4, 1] print("计算列表之积,基数2:", reduce_test(lambda x, y: x * y, num_list2, 2)) print("-"*40) print("使用内置函数reduce结合实现计算列表之和、积") from functools import reduce num_list3 = [12, 3, 4, 1] print("计算列表之和:", reduce(lambda x, y: x + y, num_list3)) num_list3 = [12, 3, 4, 1] print("计算列表之和,基数为2:", reduce(lambda x, y: x + y, num_list3, 2)) num_list3 = [12, 3, 4, 1] print("计算列表之积:", reduce(lambda x, y: x * y, num_list3)) num_list3 = [12, 3, 4, 1] print("计算列表之积,基数2:", reduce(lambda x, y: x * y, num_list3, 2))
输出结果
使用自定义函数实现计算列表之和、积 计算列表之和: 20 计算列表之和,基数为2: 22 计算列表之积: 144 计算列表之积,基数2: 288 ---------------------------------------- 使用自定义函数和匿名函数结合实现计算列表之和、积 计算列表之和: 20 计算列表之和,基数为2: 22 计算列表之积: 144 计算列表之积,基数2: 288 ---------------------------------------- 使用内置函数reduce和匿名函数结合实现计算列表之和、积 计算列表之和: 20 计算列表之和,基数为2: 22 计算列表之积: 144 计算列表之积,基数2: 288
浙公网安备 33010602011771号