分析列表
大家好,如何将列表解析为四个元素:
列表:(x1 x2 x3 x4 x5 x6 x7 x8 x9 x10……)
转换为:
列表1=((x1 x2 x3 x4)(x5 x6 x7 x8)(x9 x10 x11 x12)(x13 x14 x15 x16)……)
提前感谢 你好
您没有声明您在该列表中拥有什么类型的项目,所以我假设它们同时是数字。
下面是我使用递归过程的尝试。
(defun 4items (lst)
(if lst (cons (if (> (length lst) 3) (list (car lst) (cadr lst) (caddr lst) (nth 3 lst)) lst) (4items (cddddr lst))))
)
上述代码的使用:
(4items '(1 2 3 4 5 6 7 8 9 10 11 12 13))
嗨,非常感谢你。
是的,你想当然了。,它们都是列表中的数字,我的问题已经解决了。
再次感谢你的帮助。 很高兴听到这个消息。
不客气。 FWIW,Lee Mac有这个
我也想玩:
; _$ (foo 4 (mapcar 'chr (vl-string->list "ABCDEFGHIJKLMNOPQRSTUVWXYZ")))
; (("A" "B" "C" "D") ("E" "F" "G" "H") ("I" "J" "K" "L") ("M" "N" "O" "P") ("Q" "R" "S" "T") ("U" "V" "W" "X") ("Y" "Z"))
(defun foo ( n L / r )
(repeat n (and L (setq r (cons (car L) r))) (setq L (cdr L)) r)
(if L (cons (reverse r) (foo n L)) (list (reverse r)))
)
页:
[1]