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

    
    
    场景模拟:实现一个列表内所有元素 *2 的效果

    普通的实现方式
    单个列表是可以做到很轻松的实现,但是如果我又多个列表都要这个操作,那每个都操作就会重复代码
    1 ret = []
    2 num_1 = [1,2,10,5,3,7]
    3 for i in  num_1:
    4     ret.append(i ** 2)
    5 print(ret)

    用函数实现减少重复代码,但是看起来代码的量不少
    而且用这种参数代入的方式也会出现限定的感觉,比如现在我运算方法又变了呢
    1 num_1 = [1,2,10,5,3,7]
    2 num1_1 = [1,2,10,5,3,7]
    3 def map_tes    (array):
    4     ret = []
    5     for i in  array:
    6         ret.append(i ** 2)
    7     return ret
    8 print(map_tes(num1_1))
    9 print(map_tes(num_1))

    单参数只能传要处理的数据,运行的方法是写死的
    运算方法函数化,双参数传入数据和规定运算可以大幅升级代码
    代价是代码更复杂更长,当然可以使用匿名函数简写代码
     1 num_1 = [1,2,10,5,3,7]
     2 num1_1 = [1,2,10,5,3,7]
     3 def add_one(x):
     4     return x+1
     5 # lambda x:x+1
     6 def reduce_one(x):
     7     return x-1
     8 # lambda x:x-1
     9 def map_test(func,array):
    10     ret = []
    11     for i in  array:
    12         res = func(i)
    13         ret.append(res)
    14     return ret
    15 print(map_test(add_one,num1_1))
    16 print(map_test(lambda x:x+1,num1_1))  # 等效上一条
    17 print(map_test(reduce_one,num_1))
    18 print(map_test(lambda x:x-1,num_1))   # 等效上一条
    根据现有的知识能做到的最好的终极版本
    1 num_1 = [1,2,10,5,3,7]
    2 def map_test(func,array):
    3     ret = []
    4     for i in  array:
    5         res = func(i)
    6         ret.append(res)
    7     return ret
    8 map_test(lambda x:x+1,num_1)
     map 函数 按照顺序处理数据,不打乱顺序
        格式 : map(方法,实参)
        极大的压缩了代码量
    1 num_1  = [1,2,10,5,3,7]2 res = map(lambda x:x+1,num_1)
    3 print("内置函数map处理结果",list(res)) 

  • 相关阅读:
    判断是否是微信浏览器
    弹性盒模型
    一个发光的搜索边框(纯CSS3)
    小练习
    js控制div是否显示
    遮罩弹窗
    布局
    CSS构造表单
    CSS 滤镜(IE浏览器专属其他浏览器不支持)
    Css中光标,DHTML,缩放的使用
  • 原文地址:https://www.cnblogs.com/shijieli/p/9689785.html
Copyright © 2011-2022 走看看