emacs-lisp のリスト操作

概要

List Modification にある知らなかった関数。

delete 関数

指定した値をリストから削除した新しいリストを返す。元になったリストは 破壊される。

(setq l01 '(1 2 3))
(delete 1 l01)

重複も削除する。

(setq l01 '(1 1 2 3 1 1))
(delete 1 l01)

元のリストは破壊される。

(setq l01 '(1 1 2 3 1 1))
(delete 1 l01)
l01

remove 関数

元のリストから指定した値を削除する。元になったリストは無事。

(setq l01 '(1 2 3))
(remove 1 l01)

元のリストは無事。

(setq l01 '(1 1 2 3 1 1))
(remove 1 l01)
l01

append 関数

2つのリストを連結したリストを返す。

(setq l01 '(1 2 3))
(setq l02 '(4 5 6))

(append l01 l02)

butlast 関数

指定した個数の要素をリストから除外したリストを返却する。

(setq l01 '(1 2 3 4 5))
(butlast l01 3)