リストから要素を取り出す - lisp-cookbook-ja/common-lisp GitHub Wiki

リスト

リストの n 番目の要素を参照するには nth 手続きを使います。 より汎用なシーケンス用の関数としてeltも利用できます。(汎用のかわりリスト専用のnthより低速です)

(defparameter *xs* '(0 1 2 3 4 5))

(nth 0 *xs*) ;=> 0
(nth 4 *xs*) ;=> 4
(elt *xs* 4) ;=> 4

リストの先頭要素を参照するには car 手続きも使えます。 また first から tenth までのリスト参照手続きが用意されています。

(first '(1 2 3)) ; => 1
(ninth '(1 3 5 7 9 11 13 15 17 19 21)) ; => 19

リストを cons セルの列なりや木構造として考える場合には car, cdr, caar といった手続きを使うことが多くなります。

(car '(a b)) ;=> a
(caar '((a 1) (b 2) (c 3)) ;=> a

n番目以降の要素を取り出すにはnthcdr関数が使えます。

(nthcdr 0 *xs*) ;=> (0 1 2 3 4 5)
(nthcdr 4 *xs*) ;=> (4 5)
(nthcdr 8 *xs*) ;=> NIL

後ろから数えたn番目以降の要素を取り出すにはlast関数が使えます。

(last *xs*) ;=> (5)
(last *xs* 4) ;=> (2 3 4 5)
(last *xs* 8) ;=> (0 1 2 3 4 5)