リストの要素の足し算
リストの全部の要素の和をとる場合、for文を使うのはエレガントではないのだろうな、と考えながら”初めてのPython”を探すと案の定、代わりの表記法を見つけることができた(p.273)。
reduce関数を使う。
lp = [1, 0, 1, 1, 0, 1] sum = reduce((lambda x, y: x+y), lp) print sum
operatorモジュールを使うとさらに簡単。
import operator sum = reduce(operator.add, lp)
LinuxとWindowsでの動作の違い(ファイルの拡張子)
GUIのデバッグ作業をLinuxとWindowsで行っているのであるが、どちらでも動作するようにするつもりだがなかなか難しい。スプラッシュ画面にPNGファイルを表示しているのであるが、Windowsでは問題なく表示できるがLinuxではファイルを認識してくれなかった。
os.path.isfile(ファイルパス)、で調べるとFalseが帰る。なぜだLinux。
wxPythonのdemo.pyで、PNGファイルを読み込んでいる部分を見ると、”Linuxではパスの先頭の/が抜けてしまうので、/を付け直す...”という趣旨の注がついており、
path = os.path.join(os.getcwd(), 'data', 'xxx.png') path = '/' + path
などとやっているので、それか!と思ったが違った。
いろいろ考えて、実際のファイル名は'xxx.PNG'と拡張子が大文字だったので、パスの中のファイル名も大文字で指定してみたらうまくいった。
Windowsでは、そんなのお構いなしであったのに...。
Linuxで動かしてみると他にも細かいところで(Windowsでは現れなかった)エラーがでてくる。Linuxでデバッグするのがいいかも。しかし動作は鈍い...。