map()
map()って何なのかよくわからなかったのですが、いろいろ勉強した所、なんとなく判った気になったのでメモ。
lst = ['hoge', 'fuga', 'piyo'] def foo(spam): print spam # lst にある文字列を、順番に画面に出力する(1)I for x in lst: foo(x) # (2)(1)と同じことをする map(foo, lst) # (3)(1)と同じことをする [foo(x) for x in lst]
(2),(3)は、foo()の返り値を格納したリストを返してくれる。pylintでは、(2)を使うと警告がでるので、ひょっとしたら将来なくなる可能性もあるかも。<6.25 追記>
(1)(3)は手続を説明してくれるから、手続的な記述に慣れた人にはわかりやすいけど、(3)などは式なのか関数なのかよくわからないし、返値があるようには見えない。逆に、(2)の記述の仕方は、手続については一切説明がないけど、mapという関数を実行して恐らく返値が何かあるぞ、ということは理解できる。どちらがわかりやすいか、というと読む人によるとしか言えないと思う。