表内归类和分拆
有这样一個表((B 3)(A 1)(B 4) (C 9) (A 6) (B 1)(D 6))
把它拆成下面两个表
其一( ((B 3)(B 4) (B 1)) ((A 1)(A 6)) )
其二((C 9) (D 6))
这种循环结构,想了几天,也个头绪。哪位高人可以帮弄一个,或给点思路。 可以先提取'(A B C D ).然后对这表中的原图逐一判别,将头部详图的表合成一个。
本帖最后由 guosheyang 于 2023-4-24 08:02 编辑
先用vl-symbol-name将符号转字符串 再用vl-remove-if-notvl-remove-if 函数将不需要的剔除掉 本帖最后由 vitalgg 于 2023-4-24 09:03 编辑
(setq lst '((B 3)(A 1)(B 4) (C 9) (A 6) (B 1)(D 6)))
(setq lst (vl-sort lst '(lambda (x y)(< (vl-symbol-name (car x))(vl-symbol-name(car y))))))
(setq res (list:group-by lst '(lambda (x y)(= (car x)(car y)))))
;; 第一个要求
(setq res1 (vl-remove-if-not '(lambda (x)(> (length x) 1)) res))
;; 第二个要求
(setq res2 (mapcar 'car (vl-remove-if-not '(lambda (x)(= (length x) 1)) res)))
;; 将 res 中长度大于1 的为你的第一个要求,等于1的为你的第二个要求
https://gitee.com/atlisp/atlisp-lib
@lisp 开源函数库,大量函数期待您的开发与维护。众多开发者协同开发与维护,你不再是一个人在战斗。
在CAD中执行
(@:updatelib)
实时更新函数库。
本贴函数 list:group-by 源码:(注意目录结构 函数组list函数名 group-by)
https://gitee.com/atlisp/atlisp-lib/blob/main/src/list/group-by.lsp 这个A是变量名还是变量的值。如果是变量值就很简单,如果是变量名建议换成字符串储存变量名,不然会经常会赋值,对于系统来说A是默认求值
页:
[1]