列出问题
我有2个等长的列表,其中包含以下项:((x y z)name)示例列表1:
((496502.36 5733207.41 0.0)S4\U WTG-H01)((495332.36 5734422.41 0.0)S4\U WTG-H02)((493742.36 5734362.41 0.0)S4\U WTG-H03)((493427.36 5735207.41 0.0)S4\U WTG-H04)((492132.276311227 5734917.0.0)S4\U WTG-H05))
示例列表2:
((496502.36 5733207.41 0.0)S4\u OSS-H01\u CASE2\u AP-ORG)((495332.36 5734422.41 0.0)S4\u H01-H02\u CASE2\u AP-ORG)((493742.36 5734362.41 0.0)S4\u H02-H03\u CASE2\u AP-ORG)((493427.36 5735207.41 0.0)S4\u H03-H04\u CASE2\u AP-ORG)((492300.0 5734917).0 0.0)S4\u H04-H05\u案例2\u AP-ORG)
我想基于(x y z)坐标比较这两个列表。
如何获取列表1项((x y z)名称),哪些xyz坐标与列表2的任何xyz坐标都不匹配?
笔记:
[列表]
[*]两个列表可以随机排序
[*]在所示的示例列表中,1个坐标不匹配用于测试目的
[/列表]
我发现了这样的东西:
(vl-remove-if '(lambda (x) (member (x) list2)) list1)对于上述代码,列表1应仅以不匹配的((x y z)名称)项结束。
现在x是((x y z)名称),但我需要比较(车x)=(x y z)。
但我在某个地方读到,如果坐标(不)相等,则无法与“成员”进行检查?
有人知道怎么做吗? 请尝试以下操作:
(defun foo ( lst1 lst2 )
(vl-remove-if
(function
(lambda ( itm1 )
(vl-some
(function
(lambda ( itm2 )
(equal (car itm1) (car itm2) 1e-
)
)
lst2
)
)
)
lst1
)
)
_$ (foo list1 list2)
(((492132.0 5.73492e+006 0.0) S4_WTG-H05)) 哇!很有魅力,塔克斯! 不客气!
页:
[1]