zoukankan      html  css  js  c++  java
  • day11 reduce函数

    场景模拟:
      序列元素在原有基础上加1

    常规方法
      简单但扩展性查
    1 num1 = [1,2,3,4,5,6,7,8,9,100]
    2 res    = 0
    3 for i in num1:
    4     res += i
    5 print(res)


    函数方法
     扩展性好,代码多
    1 num1 = [1,2,3,4,5,6,7,8,9,100]
    2 def    reduce_test(array):
    3     res = 0
    4     for i in array:
    5         res += i
    6     return res
    7 print(reduce_test(num1))

    reduce 函数 
      场景模拟 :序列内的所有元素相乘
      内部原理,参数两个,方法以及预处理参数
     1 num1 = [1,2,3,4,5,6,7,8,9,100]
     2 # def multi(x,y):
     3 #     return x*y
     4 # lambda x,y:x*y
     5 def    reduce_test(func,array):
     6     res = array.pop(0)
     7     for i in array:
     8         res = func(res,i)
     9     return res
    10 print(reduce_test(lambda x,y:x*y,num1))

    reduce函数支持初始值
      场景模拟 :序列内的所有元素相乘,并附加一个初始值一起相乘操作
      代入初始值后的原理
     1 num1 = [1,2,3,4,5,6,7,8,9,100]
     2 # def multi(x,y):    # 依旧是运算方法简单的话可以用匿名函数替换
     3 #     return x*y
     4 # lambda x,y:x*y
     5 def    reduce_test(func,array,init=None): # 在参数中加入了初始值
     6     if    init is None:
     7         res = array.pop(0)
     8     else:
     9         res=init
    10     for i in array:
    11         res = func(res,i)
    12     return res
    13 print(reduce_test(lambda x,y:x*y,num1,10000))

    reduce 函数 
      在Python3中,reduce()函数已经被从全局名字空间里移除了,
      放置在fucntools模块里,通过引入functools模块来调用
    1 from functools import reduce
    2 num1 = [1,2,3,4,5,6,7,8,9,100]
    3 print(reduce(lambda x,y:x*y,num1,10))

     

      


      
  • 相关阅读:
    证明最大公约数Stein算法(高精度算法)
    链表常用内容和易犯错误
    斐波那契数列——各种公式证明
    用矩阵和待定系数法求数列的分析(复杂度log(n))
    盒模型(外边距)
    盒子模型(内边距)
    盒子模型(边框)
    jupyterhub
    1分钟k线图能反映什么?(转)
    python的self
  • 原文地址:https://www.cnblogs.com/shijieli/p/9698195.html
Copyright © 2011-2022 走看看