リスト内包表記と Map
Python では、リスト内包表記と map() の両方が要素のリストを変換する効率的な方法を提供します。ただし、この 2 つのどちらかを選択する場合は、考慮すべき微妙なニュアンスがあります。
パフォーマンスに関する考慮事項
map() は、一部のシナリオ、特に使用する場合にパフォーマンスが若干向上する可能性があります。ラムダ式を作成せずに既存の関数を使用します。ただし、リスト内包表記は、他のケース、特にラムダ関数が必要な場合には、map() よりも優れたパフォーマンスを発揮することがあります。
コードの可読性と Python スタイル
多くの Python 開発者は、リスト内包表記を見つけています。地図に比べて直接的で読みやすい。リスト内包表記は変換を 1 つの簡潔な行で表現しますが、map は 2 つの別々の呼び出しを必要とします。1 つはマップ オブジェクトを作成し、もう 1 つはそれをリストに変換します。
同様の関数を使用した例
同じ関数が次のリストに適用されるこの例を考えてみましょう。 integers:
xs = range(10) result_map = map(hex, xs) result_list_comprehension = [hex(x) for x in xs]
このコードをベンチマークすると、map がわずかに高速であることがわかります (ループあたり 4.86 us 対 5.58 us)。
Lambda 関数を使用した例
ただし、ラムダ関数が必要な場合は、リスト内包表記のパフォーマンスが大幅に向上します。利点:
xs = range(10) result_map = map(lambda x: x+2, xs) result_list_comprehension = [x+2 for x in xs]
ここでは、リスト内包表記はマップの約 2 倍の速度で実行されます (ループあたり 2.32 us 対 4.24 us)。
結論
ラムダなしで既存の関数を再利用する場合、map() のパフォーマンスがわずかに向上する可能性がありますが、リスト一般に、内包表記は、ほとんどのシナリオ、特にラムダ関数が関与する場合、より Python 的で効率的であると考えられています。
以上がリスト内包表記または Map(): リスト変換にはどちらの Python アプローチが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。