昨日のエントリ(zip関数のパフォーマンス)にて zip関数を for文と組み合わせて使った場合のパフォーマンスについて問題がありそうという記事をアップした。
せっかくなので、さらに高速化を図るため、map関数を使った場合の比較も行ってみた。
結果としては、range()でインデックスを作って回すループよりもmap関数を使ったほうが、倍ぐらいのパフォーマンスがありそう。
せっかくなのでリスト内包表記にも挑戦してみようかと思ったのだが、複数のシーケンスを同時に回す方法がわからず断念、、、
昨日のエントリ(zip関数のパフォーマンス)にて zip関数を for文と組み合わせて使った場合のパフォーマンスについて問題がありそうという記事をアップした。
せっかくなので、さらに高速化を図るため、map関数を使った場合の比較も行ってみた。
結果としては、range()でインデックスを作って回すループよりもmap関数を使ったほうが、倍ぐらいのパフォーマンスがありそう。
せっかくなのでリスト内包表記にも挑戦してみようかと思ったのだが、複数のシーケンスを同時に回す方法がわからず断念、、、
python の zip関数は for文と組み合わせて使うと、2つのシーケンスに対して同時にループ処理を行うことができるので、とても便利。
しかし、実際に使ってみると、zipするシーケンスのサイズが大きくなると、パフォーマンスがガタ落ちすることがわかった。
Python を使い初めてから気になっていた Sphinx とやらに手を出してみました。
キッカケはIBMの以下の記事です。
と言っても、さすがMacなので、brew で一発OK。
$ brew install opencv
こんだけ。
ただしこのままだと、ライブラリにパスが通っていないため、import 時にエラーになります。
ということでPython配下にライブラリをコピーします。
$ cp /usr/local/Cellar/opencv/2.3.1a/lib/python2.6/site-packages/cv2.so /Library/Python/2.6/site-packages/.
せっかくなのでラプラシアンフィルタをかけてみました。
ちょっくら面白い動きをしたので、晒してみる。
ループの中でコンテナを書き換えても、ループの終了判定やらには影響しないのかなーと思ったが、一歩間違えると無限ループ化も夢じゃないようだ。
まとめながら理解してみた。
Q. lambda 関数とdef ステートメントの関係は? 両者を比較してください。
lambda と def は、どちらも関数オブジェクトを作ることができる、という点では共通しています。ただし、lambda は式なので、def ステートメントとは違い、文法的にdefステートメントが使用できない箇所でも使えます。たとえば、リストのリテラル、関数の呼び出しコードなどの中でも使えるのです。lambda は必ず使わなくてはならない、というものではありません。lambda と同等のコードは、必ずdef を使って書くことができるからです。ただ、def を使った場合、関数には最初からすべて名前がある、ということになります。lambda は、特定の場所だけで使われ、他に応用される可能性の低い、簡単な関数を作る場合に便利です。lambda で得られる戻り値は1つに限定されています。ステートメントのブロックには対応できないので、大規模な関数の作成には向きません。
by はじめてのPython 第3版 pp.405
早速インストールしたtreeコマンドを使ってみたら、文字化け発生。
オプションを付けて解決。
» Read more…