zoukankan      html  css  js  c++  java
  • python--reduce()函数

    reduce函数实现函数对象对参数运算之后输出结果的累积计算

    函数导入:

    1 from functools import reduce

    函数调用:

    1 def add(x, y):
    2     return x+y
    3 
    4 print(reduce(add, [1,2,3,4,5]))
    1 reduce(lambda x, y: x+y, [1,2,3,4,5])
    2 Out[1]: 15

      上面两者等价

    下面解释更复杂的使用情形:

    1 def a(x, y):
    2     return x + y
    3 def b(x):
    4     x /= 3
    5     return x+0.2
    6 def c(x):
    7     x %= 2
    8     return x

      调用函数:

    1 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b])(1,2)
    2 Out[2]: 1.2

      这里依次传入了函数a,b,返回的是一个函数,所以后面加括号调用。

    1 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b])(1,8)
    2 Out[3]: 3.2
    3 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b, c])(1,8)
    4 Out[4]: 1.2000000000000002

      这里的reduce实现了a、b、c三个函数的连接---->c( b( a() ) ),而前面的我们计算了[1,2,3,4,5]的累积和,这里我们怎么计算呢?

    1 d = reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b, c])
    2 reduce(d, [1,8,10])
    3 Out[5]: 1.9333333333333331

      上面的问题可以这样实现,还有没有其他方法直接实现呢?目前还没有发现直接在一个reduce里面累积函数和参数的方式,如果有也希望大家留言提醒!

  • 相关阅读:
    【JAVA】日志管理slf4j
    【JAVA】从java线程来看java内存模型
    【数据结构】---栈和队列
    【数据结构】---链表
    C++ 第10章 反省程序与C++标准模板库
    回忆C++知识点(1)
    C++ 第8章 多态性
    C++ 第7章 继承与派生
    C++ 第6章 数组、指针、字符串
    C++ 第5章 数据的共享与保护
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/11958991.html
Copyright © 2011-2022 走看看