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

  • 相关阅读:
    类的空间问题
    面向对象初识
    collections模块,shelve模块
    一段水印文字的练习
    jquery选择器中(:button)的含义
    关于通过jquery来理解position的relative及absolute
    [小明学算法]1.动态规划--最长递增子序列问题
    [小明学算法]2.贪心算法----
    [Unity的序列化]2.技能编辑器的实现
    [Unity的序列化]1.什么是序列化
  • 原文地址:https://www.cnblogs.com/shijieli/p/9689785.html
Copyright © 2020-2023  润新知