1. ホーム
  2. python

[解決済み] リスト理解 vs マップ

2022-03-20 12:57:09

質問

を使用した方が良い理由はありますか? map() をリスト内包の上に置くか、あるいはその逆か? どちらか一方が一般的に効率的であったり、他方よりも一般的にpythonicであると考えられているのでしょうか?

どのように解決するのですか?

map の方が微視的に速い場合がある(そのためにラムダを作らず、同じ関数をmapとlistcompで使っている場合)。リスト内包の方が速い場合もありますし、多くのPythonistはリスト内包の方が直接的でわかりやすいと考えています(すべてではありません)。

全く同じ関数を使用した場合の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がラムダを必要とする場合、性能比較が完全に逆転してしまう例です。

$ 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