2020-05-11
■macOS + Homgebrew + pyenvでtkinterが使えるPythonをビルドしたい
Homebrewでtcl-tkをインストールしておいて、
PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'" pyenv install 3.7.4
などとする。
via https://github.com/pyenv/pyenv/issues/1375#issuecomment-533182043
2020-05-21
■"forループが遅い"は正しくない
"forループが遅いからmapで書こう"は正しくない。
forループより「Pythonで書かれた関数(lambda含む)」の呼び出しコストの方が馬鹿にならない。
リストに入った文字列に対して、それぞれ2文字目から2文字分を切り取った文字列でリストを作ることを考える(まだ曖昧だけど本筋じゃないので許して)
seq = [''.join(str(random.randint(0, 9)) for s in range(5)) for _ in range(1_000_000)]
とかして用意しておこう。
result = list(map(lambda x: x[2:4], seq))
より、愚直なforループ
result = [] for x in seq: result.append(x[2:4])
の方が速い。
しかし"mapが遅い"という結論にははならない。
愚直なforループより、
result = list(map(itemgetter(slice(2, 4)), seq))
の方が速いから。(itemgetter は operatorモジュールからimportすること)
lambdaとitemgetterとの差から、"mapが遅い"のではなくて、"lamdaの呼び出し/実行が遅い"と考えるのがいいだろう。
とはいえ結局、
result = [x[2:4] for x in seq]
がさらに速いので"内包表記と(関数呼び出しを伴わない)式で書けるならそれでいい"ということで。
2020-05-31
■グロリアス・ドーン
7巻読んだのが2008年10月だったので、11年半ぶりに読み進めた。10年かけてちびちび読んでいた8巻。
グロリアスドーン8 少女は粉雪に踊る
https://amzn.to/2MnMrJc
グロリアスドーン9 ぐるぐる!
https://amzn.to/2AwR1SU
グロリアスドーン10 桜舞い散る空の上、
https://amzn.to/2XRtLae
グロリアスドーン11 幾億の時を越え星を越え、
https://amzn.to/37374Ek
グロリアスドーン12 出逢いの詩は静かに広がる
https://amzn.to/3gN9XNZ
熱い展開。「これってもしや……?」と森さんのファンなら誰でも思うことが中盤でバラされる。
キャサリンはどのように子供を産んだのか?
https://amzn.to/36T064G
NOVAで読んでいるはずのものが多かった。なんとなく覚えているのも忘れているのもあり。楽しい時間だった。
自生の夢
https://amzn.to/2MpDhvY
一般書のようでもあり、学術書でもあり。
賀茂川コミュニケーション塾ービブリオバトルから人工知能まで
https://amzn.to/2MlxHL8
ノルマ的
魔法科高校の劣等生(31) 未来編
https://amzn.to/2Xqp20i
薬屋のひとりごと9
https://amzn.to/2MrqtoJ