Pythonクックブックを読んでいる(4)
2009年3月1日
【4章 ショートカット】
1. リスト内包表記に条件文を足せるのを忘れてた
>>> [i for i in range(0,5) if i % 2 == 0] [0, 2, 4]
「あー、リスト内包表記に条件が付けられればいいなぁ!」とか、素で考えてた・・・。
・・・と、それはさておき、以下は本に書いてあった言葉なんすが
「リストにループを掛けたいだけであれば、内包を使うべきではない。
ループがしたいならループを書くことだ。」
うーん、いいこと言うなぁー。
2. map
>>> def foo(x): ... return x * x ... >>> map(foo, range(0, 5)) [0, 1, 4, 9, 16]
こんなのもあったのか・・・てか、想像付くだろうよ
3. dict.setdefault
dict.getの代入版みたいなもの
4. dictのキーをキーワード引数で足す
>>> dict({'a':1, 'b':2}, c=3, d=4) {'a': 1, 'c': 3, 'b': 2, 'd': 4}
5. dictのキーにintが使える
>>> d = {'a':1, 22:'b'} >>> d {'a': 1, 22: 'b'} >>> d[22] 'b'
int以外も使えるのかもだけど未確認
使いどころは不明
6. (key, value)でdictを生成
>>> dict([['a', 1], ['b', 2]]) {'a': 1, 'b': 2}
7. dictのキーをクラスの属性に変える
d[‘foo’]は書くのが面倒でしょ? だったらこうするといいよ!
・・・という話らしい。
class Bunch(object): def __init__(self, **kwargs): self.__dict__.update(kwargs) b = Bunch(foo=123, bar="BAR!", baz=[1, 2, 3]) print b.foo print b.bar print b.baz
多分、こういう風に使うことは無いとは思うが、__dict__の理解には役立った。
以上っす。
Pythonは急遽やることになったため、
「とりあえず、期日までに動くものを!」という感じで、本当に単純な記法に絞って勉強してた。
・・・んだったなぁ、というのを思い出させていただいた章でした。