リストの要素の足し算

リストの全部の要素の和をとる場合、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デバッグ作業をLinuxWindowsで行っているのであるが、どちらでも動作するようにするつもりだがなかなか難しい。スプラッシュ画面に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デバッグするのがいいかも。しかし動作は鈍い...。