我是Lisp编程的新手,正在尝试从一个Lisp中的单个列表创建一个子列表,并从列表中添加一对奇数和偶数。例如:我有一个清单
ListA ("a" "b" "c" "d" "e" "f" "g" "h")
现在我想转换为以下列表:
enter code here
ListB ( ("a" "b") ("c" "d") ("e" "f") ("g" "h") )
所以总是会以((第一秒)(第三秒)(第五秒)............)的值来生成子列表
我尝试了多种方法,例如首先取出奇数项和偶数项并使用函数(列表(oddlist偶数列表)),但没有达到上述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))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句