明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2119|回复: 5

[原创]表的交集 并集 差集

[复制链接]
发表于 2008-5-23 19:18:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-5-23 19:18:26 编辑

;;--求两个表的交集---------------------------------------------------
  (defun lst-union (#@lst1
 #@lst2 / $lst2 #lst2)
    (setq $lst2 (append #@lst1
 #@lst2)
   #lst2 (lst-intersect #@lst1
 #@lst2)
    )
    (if #lst2
      (setq $lst2
      (append (foreach x #lst2 (setq $lst2 (vl-remove x $lst2)))
       #lst2
      )
      )
      $lst2
    )
  )
;;--求两个表的差集---------------------------------------------------
  (defun lst-subtract (#@lst1
 #@lst2 /)
    (if (setq #lst2 (lst-intersect #@lst1
 #@lst2))
      (foreach x #lst2 (setq #@lst1 (vl-remove x #@lst1)))
      #@lst1
    )
  )
;;--求两个表的交集---------------------------------------------------
  (defun lst-intersect (#@lst1
 #@lst2 / nn @z @lst2)
    (setq nn 0)
    (while (setq @z (nth nn #@lst1))
      (if (member @z #@lst2)
 (setq @lst2 (cons @z @lst2))
      )
      (setq nn (1+ nn))
    )
    (if @lst2
      (reverse @lst2)
      nil
    )
  )
发表于 2008-5-25 10:03:00 | 显示全部楼层
(defun lst-union (lst1 lst2)
  (append lst1 (vl-remove-if '(lambda (x) (member x lst1)) lst2))
)
(defun lst-subtract (lst1 lst2 / lst)
  (setq lst (append lst1 lst2))
  (vl-remove-if '(lambda (x) (member x (cdr (member x lst)))) lst)
)
(defun lst-intersect (lst1 lst2)
  (vl-remove-if-not '(lambda (x) (member x lst2)) lst1)
)
回复 支持 2 反对 0

使用道具 举报

发表于 2012-11-29 19:55:38 | 显示全部楼层
学习了,做个记号!
发表于 2021-7-20 16:56:24 | 显示全部楼层
本帖最后由 yjtdkj 于 2021-7-20 17:10 编辑
caoyin 发表于 2008-5-25 10:03
(defun lst-union (lst1 lst2)  (append lst1 (vl-remove-if '(lambda (x) (member x lst1)) lst2)))( ...

你这个差集不对,这个不叫差集,应该是两集合去掉交集后剩下的部分,也就是对称差Symmetric Difference
发表于 2021-7-20 17:51:51 | 显示全部楼层
yjtdkj 发表于 2021-7-20 16:56
你这个差集不对,这个不叫差集,应该是两集合去掉交集后剩下的部分,也就是对称差Symmetric Difference

好像叫交集取反?
发表于 2021-8-3 23:21:10 | 显示全部楼层
好东西,收藏备用,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 05:21 , Processed in 0.160585 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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