Python-列表理解vs地图

发布于 2021-02-02 23:24:16

是否有理由更喜欢使用map()列表理解,反之亦然?它们中的一个通常比另一个效率更高,或者通常被认为比另一个更Python化吗?

关注者
0
被浏览
161
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在某些情况下,map可能会在显微镜下更快(当你不是为此目的生成lambda,而是在maplistcomp中使用相同的函数时)。在其他情况下,列表理解可能更快,大多数(并非所有)蟒蛇认为它们更直接、更清晰。

    使用完全相同的函数时map的微小速度优势的一个示例:

    $ python -mtimeit -s'xs=range(10)' 'map(hex, xs)'
    100000 loops, best of 3: 4.86 usec per loop
    $ python -mtimeit -s'xs=range(10)' '[hex(x) for x in xs]'
    100000 loops, best of 3: 5.58 usec per loop
    

    当地图需要使用lambda时,如何完全颠倒性能比较的示例:

    $ python -mtimeit -s'xs=range(10)' 'map(lambda x: x+2, xs)'
    100000 loops, best of 3: 4.24 usec per loop
    $ python -mtimeit -s'xs=range(10)' '[x+2 for x in xs]'
    100000 loops, best of 3: 2.32 usec per loop
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看