明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2632|回复: 5

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

[复制链接]
发表于 2005-9-18 16:36:00 | 显示全部楼层 |阅读模式

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

如:已知两线相交,相画一个三角形,如何求得不相交的两点

发表于 2005-9-18 17:28:00 | 显示全部楼层
  1. ;删除列表中的相同元素
  2. (defun erase-equal-lst (lst)
  3.   (setq lst-new '())
  4.   (while (setq e1 (car lst))
  5.     (setq lst-new (cons e1 lst-new)
  6.    n   (str-len lst e1)
  7.     )
  8.     (repeat n
  9.       (setq lst (vl-remove e1 lst)
  10.       )
  11.     )
  12.   )
  13.   (setq lst-new (reverse lst-new))
  14.   lst-new
  15. )
  16. ;;求表中某个元素的个数
  17. (defun str-len (lst item)
  18.   (- (length lst) (length (vl-remove item lst)))
  19. )
如后面的问题看不懂!呵呵……
 楼主| 发表于 2005-9-18 22:08:00 | 显示全部楼层
版主:可不可以将相同元素全部删除
发表于 2005-9-19 08:32:00 | 显示全部楼层

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

发表于 2005-9-19 12:06:00 | 显示全部楼层
  1. ;;;删除列表中的相同全部元素
  2. (defun erase-equal-lst-all (lst)
  3.   (setq lst-new '())
  4.   (while (setq e1 (car lst))
  5.     (setq n (str-len lst e1))
  6.     (if (= n 1)
  7.       (setq lst-new (cons e1 lst-new))
  8.     )
  9.     (repeat n
  10.       (setq lst (vl-remove e1 lst)
  11.       )
  12.     )
  13.   )
  14.   (setq lst-new (reverse lst-new))
  15.   lst-new
  16. )
  17. ;;求表中某个元素的个数
  18. (defun str-len (lst item)
  19.   (- (length lst) (length (vl-remove item lst)))
  20. )
测试:
命令: (erase-equal-lst-all '(2 3 4 5 2 3 4 6 7 8))
(5 6 7 8)
发表于 2019-7-17 11:56:34 | 显示全部楼层
少了 STR-LEN 函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-18 17:59 , Processed in 0.163302 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表