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という関数を実行して恐らく返値が何かあるぞ、ということは理解できる。どちらがわかりやすいか、というと読む人によるとしか言えないと思う。