在lisp中添加列表

时间:2016-11-06 00:12:10

标签: list recursion append lisp

在lisp中,我将列表附加为: (setq newlist(append(side a b)(this a b)(a b)))

这会将所有必需的列表附加为:(1 0 0 0 2 0 4 0 6 0) 但我想要的是这样的:((1 0)(0 0)(2 0)(4 0)(6 0))

我该怎么做才能获得所需的格式。请在lisp中发布代码示例。

1 个答案:

答案 0 :(得分:1)

所以实际上你只需要在附加元素后重构元素:

(loop :for (e1 e2) 
      :on '(1 0 0 0 2 0 4 0 6 0) 
      :by #'cddr 
      :collect (list e1 e2))

; ==> ((1 0) (0 0) (2 0) (4 0) (6 0))

建议的阅读是LOOP for black belts,我应该注意的部分是我在这里使用的部分"循环收集和包裹"和#34;解构变量"。这可能是Practical Common Lisp我阅读最多的一章。整本书非常好,所以每个lisper都应该知道它。