利用vl-remove-if 删除二维表中重复元素
利用vl-remove-if 删除二维表中重复元素(setq aa '((10 12) (11 13) (15 8) (11 13))) (setq bb (vl-remove-if(function (lambda (a1 a2) (and (= (car a1) (car a2)(= (cadr a1) (cadr a2))))) aa))
上述程序没反应,求高手解答? 你括号位置不对吧
(= (car a1) (car a2)) 自贡黄明儒 发表于 2015-5-21 15:53 static/image/common/back.gif
你括号位置不对吧
(= (car a1) (car a2))
这里是手误,当时还是没有解决问题
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(setq bb (vl-remove-if(function (lambda (a1 a2) (and (= (car a1) (car a2))(= (cadr a1) (cadr a2))))) aa))
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(foreach b aa
(if (null (member b ns))
(setq ns (cons b ns))
)
)
(reverse ns) 琴剑江山_10184 发表于 2015-5-21 18:14 static/image/common/back.gif
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(foreach b aa
(if (null (member b ns))
这确实是个可行的好方法,但是我想尝试用一个命令行来解决这个问题,也就定位到了vl-remove-if,但是貌似不太好实现呢 chongkainis 发表于 2015-5-21 20:24 static/image/common/back.gif
这确实是个可行的好方法,但是我想尝试用一个命令行来解决这个问题,也就定位到了vl-remove-if,但是貌似 ...
解决了
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(setq RET '())
(vl-remove-if
(function (lambda (x)
(IF (NOT (MEMBER x RET))
(SETQ RET (CONS x RET))
nil
) ;_ 结束IF
) ;_ 结束lambda
) ;_ 结束function
aa
) ;_ 结束vl-remove-if
琴剑江山_10184 发表于 2015-5-21 18:14 static/image/common/back.gif
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(foreach b aa
(if (null (member b ns))
解决了
(setq aa '((10 12) (11 13) (15 8) (11 13)))
(setq RET '())
(vl-remove-if
(function (lambda (x)
(IF (NOT (MEMBER x RET))
(SETQ RET (CONS x RET))
nil
) ;_ 结束IF
) ;_ 结束lambda
) ;_ 结束function
aa
) ;_ 结束vl-remove-if vl-remove-if只能接受只有一个参数的函数, 所以你那个方法是不可实现的。
页:
[1]