美文网首页
Python 的map函数和lambda匿名函数以及join函数

Python 的map函数和lambda匿名函数以及join函数

作者: welder77 | 来源:发表于2022-05-14 18:17 被阅读0次

    今天讲的这几个函数,许多时候并不是必要的,但却可以让你的代码变得更高效和简洁。

    我们通过一个实例来说明这几个函数:

    首先,我们有一个存着二进制数据的list,bit_list.

    bit_list = [0,0,0,1,0,0,0,1]
    

    我们需要把它转为字符串打印出来,最终像这样"00010001"。

    由于Python的自由,实现的方法多种多样。
    我的思路,是先将这里list内的元素,转为字符串类型,然后再用join函数连接起来并打印出来。
    我们分步骤实现吧:

    首先,是list内的元素,转为字符串。这里会用到map函数和lambda函数,
    (1) map函数可以用于快速遍历和处理list内的元素,比如把list内的元素转为str型。
    map(function, iterable, ...)
    function -- 函数
    iterable -- 一个或多个序列

    (2) lambda函数又称匿名函数,快速建立一个单行的func,但不需要为其命名。
    比如:

    lambda x: str(x) 和 以下的函数体,实际是一个东西。
    
    def to_str(x):
          return str(x)
    

    组合下两个函数后,代码如下,这段代码实际是将bit_list中的每一个元素,都代入到lambda中的str(x), 然后将返回值存入一个迭代对象:

    bit_list = map(lambda x: str(x) , bit_list )
    

    最后我们来说说join函数,它可以把list中的元素,按顺序连接起来。

    语法为 str.join(sequence)
    sequence -- 要连接的元素序列。
    str -- 连接时添加的间隔字符。空 "" 为什么都不添加

    print("".join(bit_list ))
    

    这里你会提出疑问,一个for循环不就能搞定这些吗?为什么还要用那么多函数?
    答案是快,list中的元素少时,可能并不明显,但list的元素很多时,map和join的效率远远大于for循环和多次字符串的连接。

    试想一下,一个arxml里有成千上万个信号,如果想要批量提取或处理这些信号,用map是不是可节省更多时间。实时处理总线数据的过程中,这些时间的节约是不是也是很有必要的?

    另外,以下范例,则可以让map中调用的func,附带list元素以外的额外参数,可让map的使用更为广泛。

    from functools import partial
    
    volume_ids = [1,2,3,4,5]
    ip= '172.12.13.122'
    
    mapfunc = partial(my_function, ip=ip)
    map(mapfunc, volume_ids)
    
    #or
    
    map(lambda ids: my_function(ids, ip), volume_ids);
    

    相关文章

      网友评论

          本文标题:Python 的map函数和lambda匿名函数以及join函数

          本文链接:https://www.haomeiwen.com/subject/zlhmurtx.html