tc405003 发表于 2005-9-18 16:36:00

在线等:如何删除列表中的相同元素

<P>在线等:如何删除列表中的相同元素</P>
<P>如:已知两线相交,相画一个三角形,如何求得不相交的两点</P>

xyp1964 发表于 2005-9-18 17:28:00

;删除列表中的相同元素
(defun erase-equal-lst (lst)
(setq lst-new '())
(while (setq e1 (car lst))
    (setq lst-new (cons e1 lst-new)
   n   (str-len lst e1)
    )
    (repeat n
      (setq lst (vl-remove e1 lst)
      )
    )
)
(setq lst-new (reverse lst-new))
lst-new
)
;;求表中某个元素的个数
(defun str-len (lst item)
(- (length lst) (length (vl-remove item lst)))
)
如后面的问题看不懂!呵呵……

tc405003 发表于 2005-9-18 22:08:00

版主:可不可以将相同元素全部删除

lockmyeye 发表于 2005-9-19 08:32:00

<P>删除表元素出现次数大于1的就可以了。<BR>查找表元素的出现次数的程序,论坛里应该是有的。</P>

xyp1964 发表于 2005-9-19 12:06:00

;;;删除列表中的相同全部元素
(defun erase-equal-lst-all (lst)
(setq lst-new '())
(while (setq e1 (car lst))
    (setq n (str-len lst e1))
    (if (= n 1)
      (setq lst-new (cons e1 lst-new))
    )
    (repeat n
      (setq lst (vl-remove e1 lst)
      )
    )
)
(setq lst-new (reverse lst-new))
lst-new
)
;;求表中某个元素的个数
(defun str-len (lst item)
(- (length lst) (length (vl-remove item lst)))
)测试:
命令: (erase-equal-lst-all '(2 3 4 5 2 3 4 6 7 8))
(5 6 7 8)

flowerson 发表于 2019-7-17 11:56:34

少了 STR-LEN 函数
页: [1]
查看完整版本: 在线等:如何删除列表中的相同元素