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行にまとめることができた。
それでは、ソースをさらします。