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))

     

      


      
  • 相关阅读:
    跟着太白老师学python 10day 函数的动态参数 *args, **kwargs, 形参的位置顺序
    IO 流之字符流的缓冲区
    Java IO异常处理方式
    Java IO 流
    Java 其他对象的 API
    Java 集合框架之 JDK 1.5 新特性
    Java 集合框架工具类
    Java 集合框架之 Map
    Java 集合框架查阅技巧
    Java 集合框架之泛型
  • 原文地址:https://www.cnblogs.com/shijieli/p/9698195.html
Copyright © 2011-2022 走看看