自贡黄明儒 发表于 2017-8-31 08:42:40

带容差的member

带容差的member
;;当Fuzz=0时,结果同系统member
;;(HH:member 3 '(2 5 3) 0) => '(3)
(defun HH:member (item Lst Fuzz / A FLAG)
(while (and (not Flag) (setq a (car lst)))
    (if        (equal item a Fuzz)
      (setq Flag T)
    )
    (setq lst (cdr lst))
)
(if Flag
    (cons a lst)
)
)

itoboy 发表于 2018-10-6 20:48:16

黄师兄威武,刚好用上这个函数,谢谢

vip-happy 发表于 2021-9-7 10:10:32

本帖最后由 vip-happy 于 2021-9-7 10:37 编辑

不知能否用于点表比较


(defun tolerance_member (b lst f / a Flag)
(defun H_compare (a b f)
    (and
      (equal (car b) (car a) f)
      (equal (cadr b) (cadr a) f)
    )
)
(while (and(not Flag)(setq a (car lst)))
    (if (setq Flag (H_compare (a b f)))
      nil
      (setq lst (cdr lst))
    )
)
Flag
)

xtjd 发表于 2021-9-8 07:57:18

(defun member+(expr lst fuzz)
(vl-member-if(function(lambda(x)(equal expr x fuzz)))lst)
)

vip-happy 发表于 2021-9-8 10:04:33

xtjd 发表于 2021-9-8 07:57
(defun member+(expr lst fuzz)
(vl-member-if(function(lambda(x)(equal expr x fuzz)))lst)
)

好精简的代码:victory:不知能用于2维点表搜索
页: [1]
查看完整版本: 带容差的member