我是 Lisp 编程的新手,正在尝试从 lisp 中的一个列表创建子列表,其中一对奇数和偶数来自列表。例如: 我有一个 list
ListA ("a" "b" "c" "d" "e" "f" "g" "h")
现在我想转换成下面的列表:
enter code here
ListB ( ("a" "b") ("c" "d") ("e" "f") ("g" "h") )
所以总是会生成值为((first second)(third fourth)(fifth sixth).........)的子列表
我尝试了多种方法,例如首先取出奇数项和偶数项并使用函数 (list (oddlist evenlist)) 但在上面的 ListB 中没有超过预期值。有人可以在这方面帮助我吗.非常感谢您的帮助。
最佳答案
这对于 loop 实际上非常很短:
(loop for (x y) on '(a b c d e f) by #'cddr
collect (list x y))
;=> ((A B) (C D) (E F))
如果你有奇数个元素,这确实会在最后一对中给你一个 NIL,但你没有提到在这种情况下应该发生什么:
(loop for (x y) on '(a b c d e f g ) by #'cddr
collect (list x y))
;=> ((A B) (C D) (E F) (G NIL))
关于lisp - 如何在普通 lisp 中从一个奇数对和偶数对的单个列表创建列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314957/