これは以下に関連しています:(Pythonコード)
for i in object:
doSomething(i)
対
map(doSomething, object)
どちらも理解しやすく、短いですが、速度に違いはありますか?ここで、doSomethingに戻り値がある場合、それを確認するためにマップからリストとして返されることを確認する必要があり、forループで独自のリストを作成するか、一度に1つずつ確認することができます。
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
対
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
さて、ふたりは少しずれている感じがします。2つのdoSomethingWithReturnValue関数は、ループを実行するときにオンザフライでそれらをチェックするか、最後に一度にすべてをチェックするかによって、結果が異なる場合とは異なる場合があります。また、forループは常に機能するようで、おそらく低速で、マップは特定のシナリオでのみ機能します。もちろん、どちらか一方を機能させるためにゆがみを作ることもできますが、肝心なのは、この種の機能を避けることです。
私が探しているのは、パフォーマンス、可読性、保守性、または実装の速度においてよく行われたforループと比較して、マッピング関数が本当に優れているシナリオです。答えが本当に大きな違いではない場合、実際に人々がどちらか一方をいつ使用するか、それが本当に完全に恣意的であり、機関に応じてコーディング標準によって設定されているかどうかを知りたいです。
ありがとう!
map
イテラブルのすべてのアイテムに関数を適用し、結果のリストを返したい場合に便利です。これは、forループを使用してリストを作成するよりも簡単で簡潔です。
for
多くの場合、他の状況ではより読みやすく、lispでは、基本的にマクロとマップを使用して記述された多くの反復構成がありました。したがって、map
適合しない場合は、for
ループを使用します。
理論的には、複数のCPU /プロセッサを利用できるほどスマートなコンパイラ/インタープリタがあればmap
、各項目の異なる操作を並行して実行できるため、より高速に実装できます。現時点ではそうではないと思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加