看看这个程序如何改
<p>这是个合并数据的小程序,运行后有数据重复,不知何故,请给看看,谢谢</p><p>(setq jd '((245400.0 -1.38 -7.43) (245450.0 -1.28 -7.61))<br/> lj '((245400.0 -35.3 35.1) (245450.0 -34.9 36.4))<br/>)<br/> ;(defun wh-jl (jd lj)<br/> (setq LST '())<br/> (foreach N jd ;外循环<br/> (progn<br/> (setq TMP '())<br/> (foreach M lj ;内循环<br/> (if (<= (abs (- (car M)<br/> (car N))) 0.5 <br/> )<br/> (progn<br/> (setq temp1_y (cdr n))<br/> (setq temp2_y (cdr m))<br/> (setq i 0)<br/> (setq lst_1 '())<br/> (repeat (length temp1_y)<br/> (setq temp1_y1 (nth i temp1_y))<br/> (setq ii 0)<br/> (repeat (length temp2_y)<br/> (setq temp2_y1 (nth ii temp2_y))<br/> (setq temp3_y (list temp2_y1 temp1_y1 ))<br/> (setq lst_1 (append lst_1 (list temp3_y)))<br/> (setq ii (1+ ii))<br/> );repeat<br/> (setq i (1+ i))<br/> );repeat<br/> );progn<br/> );if<br/> (setq tmp (append lst_1 tmp))<br/> );foreach<br/> (if TMP<br/> (setq LST (cons (cons (car N) TMP) LST))<br/> )<br/> )<br/>)<br/>(setq lst (reverse LST))<br/>)</p><p>运行结果:((245400.0 (-35.3 -1.38) (35.1 -1.38) (-35.3 -7.43) (35.1 -7.43) (-35.3 -1.38) (35.1 -1.38) (-35.3 -7.43) (35.1 -7.43)) (245450.0 (-34.9 -1.28) (36.4 -1.28) (-34.9 -7.61) (36.4 -7.61) (-35.3 -1.38) (35.1 -1.38) (-35.3 -7.43) (35.1 -7.43)))</p><p>我要的结果:((245400.0 (-35.3 -1.38) (35.1 -1.38) (-35.3 -7.43) (35.1 -7.43) ) (245450.0 (-34.9 -1.28) (36.4 -1.28) (-34.9 -7.61) (36.4 -7.61) ))</p> 本帖最后由 作者 于 2008-10-31 18:03:09 编辑 <br /><br /> <p>;;不知道你的规律,这样行不?</p><p>(defun TEST (A B)<br/> (mapcar '(lambda (X Y)<br/> (if (equal (car X) (car Y) 0.00001)<br/> (cons (car X)<br/> (mapcar '(lambda (X Y / N) (list X Y))<br/> (append (cdr Y) (cdr Y))<br/> (list (cadr X) (cadr X) (caddr X) (caddr X)) <br/> )<br/> )<br/> )<br/> )<br/> A<br/> B<br/> )<br/>)</p><p>(test jd lj)---></p><p>((245400.0 (-35.3 -1.38) (35.1 -7.43) (-35.3 -7.43) (35.1 -1.38))<br/> (245450.0 (-34.9 -1.28) (36.4 -7.61) (-34.9 -7.61) (36.4 -1.28)))</p><p></p> <p>谢谢!你的程序真简单,佩服</p>
页:
[1]