在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中发布代码示例。
答案 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都应该知道它。