求个表分组处理函数
求个表分组处理函数如(setq l '(1 2","3 (4 5","6 7 (8 9 "," 10 11","12)) 13 14","15 16))
表中数据按分隔符 "," 分组?
77077 发表于 2014-11-23 17:55 static/image/common/back.gif
受益匪浅,不过可能是我表述不清,我实际想要的是不改变多层表的层数。
你这是在浪费别人的时间,提问要想尽快得到快速准确的回复,必须做到:
1、尽可能详细的描述你提出你的问题,最好配合具体的实例,给出示意图或DWG例图
2、详细描述你想要得到的结果,尽可能给出最终的结果,而且是不要有歧义的结果!
这样能节省回复者的时间,而且你会尽快的到准确的回复,而不是别人给你回复了,却不是你想要的结果!
另外,请认真学习下置顶的帖子【提示公告】本版关于提问的一些注意事项 先princ为string再替换 ,为 )( 替换 1、表直接处理,递归法(不是太熟练);(setq l1 '(1 2","3 (4 5","6 7 (8 9 "," 10 11","12)) 13 14","15 16))
;(T11 L1 NIL NIL)
;=>((16 15) (14 13 12) (11 10) (9 8 7 6) (5 4 3) (2 1))
(defun t11 (l1 l2 l3)
(mapcar
'(lambda(x)
(if (= 'list (type x))
(setq l2 (t11 x l2 l3) l3 (cdr l2) l2 (car l2))
(if (= "," x)
(setq l2 (cons l3 l2) l3 nil)
(setq l3 (cons x l3))
)
)
)
l1
)
(cons l3 l2)
)2、间接处理法,通过字符处理为单括号。;(setq l1 '(1 2","3 (4 5","6 7 (8 9 "," 10 11","12)) 13 14","15 16))
;(T12 L1)
;=>((16 15) (14 13 12) (11 10) (9 8 7 6) (5 4 3) (2 1))
(defun t12 (l1 / l2 l3)
(mapcar
'(lambda(x)
(if (= "," (vl-princ-to-string x))
(setq l2 (cons l3 l2) l3 nil)
(setq l3 (cons x l3))
)
)
(read
(strcat "("
(vl-string-translate "()" ""
(vl-princ-to-string l1)
)
")"
)
)
)
(cons l3 l2)
)结果再处理;结果再处理
;((1 2) (3 4 5) (6 7 8 9) (10 11) (12 13 14) (15 16))
(reverse(mapcar 'reverse (T12 L1))) wowan3344 发表于 2014-11-23 14:36 static/image/common/back.gif
1、表直接处理,递归法(不是太熟练)2、间接处理法,通过字符处理为单括号。结果再处理
受益匪浅,不过可能是我表述不清,我实际想要的是不改变多层表的层数。 77077 发表于 2014-11-23 17:55 static/image/common/back.gif
受益匪浅,不过可能是我表述不清,我实际想要的是不改变多层表的层数。
不改变多层表的层数
分出来是个什么样??
给个结果呗...很新鲜的表...
页:
[1]