毎日Learning

学んだことを共有します

L-99: Ninety-Nine Lisp Problems p11-p12 までのソースをさらす

L-99: Ninety-Nine Lisp Problems p09-p10 までのソースをさらす - 毎日Learning の続き。

この問題に取り組むようになって、問題を1つずつ解いていくと、毎回、新たな発見があり、なかなか面白い。

今までは、ぱっとやって動いたら、はい次ーってやっていたのだが、もっと簡潔なコードが書けるんじゃないか。pythonistaなコードがあるんじゃないか。とイテレーションしながら考えていくと、こんな書き方が!という発見の連続だ。

今回は、おそらく基本的すぎると思うが、

[1,2,3] + [4,5]

>>> [1,2,3,4,5]

ってなるってことを知った。

これを使えば、list.append だと、返り値が無いので return list してやらないといけないところが、1行ですむ。

l = [1,2,3]

def hoge(l, v):
    l.append(v)
    return l

reduce(hoge, [1,2,3], [])

>>> [1,2,3]

このコードが、

l = [1,2,3]

reduce(lambda l,v: l + [v], [1,2,3], [])

>>> [1,2,3,4]

こんな感じで省略できる。

p12で、この書き方を使ったので、コードを1行にまとめることができた。

それでは、ソースをさらします。