List 在lisp中追加列表

List 在lisp中追加列表,list,recursion,append,lisp,List,Recursion,Append,Lisp,在lisp中,我将列表附加为: (setq newlist(附加(a侧b)(该a侧b)(该a侧b))) 这会将所有必需的列表追加为:(1 0 0 2 0 4 0 6 0) 但我想要的是这样的:((10)(00)(20)(40)(60)) 我应该如何获得所需的格式。请在lisp中发布代码示例。因此,实际上,您只需在添加元素后重新构造元素: (loop :for (e1 e2) :on '(1 0 0 0 2 0 4 0 6 0) :by #'cddr :c

在lisp中,我将列表附加为: (setq newlist(附加(a侧b)(该a侧b)(该a侧b)))

这会将所有必需的列表追加为:(1 0 0 2 0 4 0 6 0) 但我想要的是这样的:((10)(00)(20)(40)(60))


我应该如何获得所需的格式。请在lisp中发布代码示例。

因此,实际上,您只需在添加元素后重新构造元素:

(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))

建议阅读的内容是,我在这里使用的部分是“循环集合和包”和“解构变量”。这可能是我读得最多的一章。整本书都很好,所以每一个lisper都应该知道它。

什么是
方面
这个
那个
?它似乎不是你要找的附件。也许
(list'(side a b)'(this a b)'(that a b))
?@sds side,this and that是其他三个包含列表的函数。Like边包含:(1000),this包含:(0020)that包含:(40060)。当我附加它们时,我得到的是(100 0 0 0 0 2 0 4 0 6 0),但我需要的是((10)(0)(0)(2 0)(4 0)(6 0))@sylvester(列表)(a b边);(a b边);(a b边)给出列表中相同元素的集合,(列表(a b边)(a b边)(a b边)(a b边))给出类似的东西:((10)(0 0 0 3)(0 4 0)),但我需要的是((1 0)(0 0 0)(0 3)(0 0)(4 0))。函数不“包含”列表。它们可能会返回这些列表。请编辑您的问题,将我们要求的其他信息包含在评论中。感谢您的回复。:)