早くもSICPの2章でわけわからんと思ってたら、なんかSequenceの扱いを勘違いしてただけだったかも(||゚Д゚)
scheme の cons や append と python の appendとか
なので確認してみる。
gosh> (cons (list 1 2 3 4 5) (list 1 2 3 4 5)) ((1 2 3 4 5) 1 2 3 4 5) gosh> (append (list 1 2 3 4 5) (list 1 2 3 4 5)) (1 2 3 4 5 1 2 3 4 5)
>>> [[1, 2, 3, 4, 5]] + [1, 2, 3, 4, 5] [[1, 2, 3, 4, 5], 1, 2, 3, 4, 5] >>> [1, 2, 3, 4, 5] + [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] >>> >>> a = [1, 2, 3, 4, 5] >>> b = [1, 2, 3, 4, 5] >>> c = [1, 2, 3, 4, 5] >>> a.append([1, 2, 3, 4, 5]) >>> a [1, 2, 3, 4, 5, [1, 2, 3, 4, 5]] >>> b.extend([1, 2, 3, 4, 5]) >>> b [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] >>> c.insert(0, [1, 2, 3, 4, 5]) >>> c >>> [[1, 2, 3, 4, 5], 1, 2, 3, 4, 5] >>> >>> [[1, 2, 3, 4, 5]].__add__([1, 2, 3, 4, 5]) [[1, 2, 3, 4, 5], 1, 2, 3, 4, 5] >>> [1, 2, 3, 4, 5].__add__([1, 2, 3, 4, 5]) [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] >>> #ちなみにこれはできない >>> [1, 2, 3, 4, 5].append([1, 2, 3, 4, 5]) >>> print [1, 2, 3, 4, 5].append([1, 2, 3, 4, 5]) None
とりあえず scheme の(cons x y) を python では [x] + y で代用していいのかな?。
Lisp プログラマのための Python 人門では「これはやらないように」とあるけど。うまい方法が思いつかないからこれで行こう(暫定)