明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1408|回复: 6

[已解答] [已解决]从表中剔除不用了的元素

[复制链接]
发表于 2014-11-10 15:59:22 | 显示全部楼层 |阅读模式
本帖最后由 wmz 于 2014-11-10 18:41 编辑

表2中是某些点的编号和坐标,表1中是纯点编号,欲将其表2中编号与表1中编号相同的那些坐标从表2 中剔除,形成一新表。我写的程序太慢,请教大侠们出手相助,感激不尽!
(这些数据是部分摘录,真实的数据有几千上万个以上元素)
表1:(163 227 245)

表2:((163 38347358.67 3293309.94 3.00) (163 38347354.67 3293304.27 3.00) (192 38347411.36 3293358.33 3.00) (192 38347402.36 3293360.97 3.00) (193 38347399.99 3293365.80 3.00) (193 38347402.36 3293360.97 3.00) (195 38347361.61 3293313.90 3.00) (195 38347358.67 3293309.94 3.00) (224 38347382.49 3293340.96 3.00) (224 38347409.60 3293356.23 3.00) (225 38347411.36 3293358.33 3.00) (225 38347409.60 3293356.23 3.00) (226 38347399.99 3293365.80 3.00) (226 38347396.23 3293366.07 3.00) (227 38347330.86 3293283.73 3.00) (227 38347336.84 3293288.68 3.00) (228 38347361.61 3293313.90 3.00) (228 38347359.33 3293319.55 3.00) (245 38347399.69 3293375.27 3.00) (245 38347396.23 3293366.07 3.00))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-11-10 16:30:27 | 显示全部楼层
本帖最后由 ll_j 于 2014-11-10 16:31 编辑

是这个意思吗?
  1. (vl-remove-if '(lambda(x) (member (car x) lst1)) lst2)
发表于 2014-11-10 16:49:01 | 显示全部楼层
本帖最后由 wowan1314 于 2014-11-10 17:05 编辑

纯lisp方法!!
  1. (mapcar '(lambda(x)(or(member(car x)l1)(setq l3(cons x l3))))l2)
 楼主| 发表于 2014-11-10 17:59:48 | 显示全部楼层
ll_j 发表于 2014-11-10 16:30
是这个意思吗?

是这个意思,成功了。十分感谢!
      我这里有一个奇怪的问题,我也照这个思路写了(当然没有你这个既精简又高效),总是测试不成功。而且当用你的这个测试时还是不成功,于是我就纳闷了,但我用到实际运行中时(即总的程序中),却是对的。因为我要单独写这一段嘛,我就在程序运行中将这两个表写到文件里去。再单独写代码进行调试,其表现却总是我想剔除的元素纹丝不动。用你这个也是。这啥原因?弄不懂。
 楼主| 发表于 2014-11-10 18:01:27 | 显示全部楼层
wowan1314 发表于 2014-11-10 16:49
纯lisp方法!!

成功了。两位的都很好,十分感谢!
      我这里有一个奇怪的问题,我也照这个思路写了(当然没有你这个既精简又高效),总是测试不成功。而且当用你的这个测试时还是不成功,于是我就纳闷了,但我用到实际运行中时(即总的程序中),却是对的。因为我要单独写这一段嘛,我就在程序运行中将这两个表写到文件里去。再单独写代码进行调试,其表现却总是我想剔除的元素纹丝不动。用你这个也是。这啥原因?弄不懂。

点评

计算机中实数的离散误差  发表于 2014-11-10 20:09
发表于 2014-11-15 23:21:18 | 显示全部楼层
想知道纯lisp方法和vl-remove-if方法哪个更快?楼主可以测试一下吗?
发表于 2014-11-16 02:57:41 | 显示全部楼层
(defun LM:RemoveWithFuzz ( l1 l2 fz )
    (vl-remove-if
        (function
            (lambda ( a )
                (vl-some
                    (function (lambda ( b ) (equal a b fz)))
                    l1
                )
            )
        )
        l2
    )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 22:52 , Processed in 0.206058 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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