LISP中关于合并列表的操作总结:
先来看几个例子:
CL-USER 51 : 1 > (setq l1 '(1 2 3))
(1 2 3)
CL-USER 52 : 1 > (setq l2 '(4 5 6))
(4 5 6)
CL-USER 54 : 1 > (append l1 l2)
(1 2 3 4 5 6)
CL-USER 53 : 1 > (cons l1 l2)
((1 2 3) 4 5 6)
CL-USER 58 : 1 > (append (list l1) (list l2))
((1 2 3) (4 5 6))
CL-USER 58 : 1 > (append (list l1) (list l2))
((1 2 3) (4 5 6))
CL-USER 59 : 1 > (cons l1 (list l2))
((1 2 3) (4 5 6))
CL-USER 59 : 1 > (cons l1 (list l2))
((1 2 3) (4 5 6))
从上面的例子中,我们可以得到如下的分析:
- append 可以接受n(n >= 2) 个参数,如果这些参数都是列表的话,则会将第一个列表之后的每个列表中的元素放在第一个列表的后面;
- cons可以接受 2 个参数,如果这些参数都是列表的话,则会将第一个列表以及第二个列表中的元素组成一个新的列表;
- 如果以两个列表为元素组成一个新列表,则可以使用
(append (list l1 ) (list l2) )
或者(cons l1 (list l2) )
.