小编典典

列表理解与地图

all

是否有理由更喜欢使用map()列表理解,反之亦然?它们中的任何一个通常比另一个更有效还是被认为通常更pythonic?


阅读 91

收藏
2022-03-01

共1个答案

小编典典

map在某些情况下可能会在微观上更快(当您不是为此目的制作 lambda,而是在 map 和 listcomp
中使用相同的函数时)。在其他情况下,列表推导可能更快,并且大多数(不是全部)pythonistas 认为它​​们更直接和更清晰。

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

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

当 map 需要 lambda 时,性能比较如何完全反转的示例:

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