マップとリストの内包: パフォーマンスと Python 性
反復可能なデータを扱うとき、Python プログラマーは、map() を使用するかどうかの選択に直面することがよくあります。そしてリストの内包表記。どちらのメソッドもデータ変換用の洗練された構文を提供しますが、効率性と Python スタイルの微妙な違いを理解することは価値があります。
変換関数がすでに定義されており、map() とリスト内包表記の間で共有されている場合、map () を使用すると、速度がわずかに向上する可能性があります。ただし、map() 関数にラムダ式が必要な場合、この利点は無視できます。
次の例を考えてみましょう:
xs = range(10)
map() の変換とリスト内包表記に同じ関数を使用する:
map(hex, xs) [hex(x) for x in xs]
ベンチマークを実行すると、これでは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() 関数にラムダが必要な場合、パフォーマンスの比較は大きく変わります。
map(lambda x: x+2, xs) [x+2 for x in xs]
ベンチマークの結果は、この場合、リスト内包表記の明らかな利点を示しています。 :
$ 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
Python 開発者は、パフォーマンスを超えてリスト内包表記を重要視することがよくあります。パイソン的。これらの直接的で簡潔な構文は、map() やラムダを使用するよりも慣用的であると考えられています。
最終的に、map() とリストの内包表記のどちらを選択するかは、特定のユースケースと、効率性と Python 性に対するプログラマの好みによって決まります。 。ただし、パフォーマンスの微妙な違いを理解することで、情報に基づいた意思決定を行い、コードを最適化することができます。
以上がPython におけるマップとリストの理解: より速く、より Python っぽいのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。