katamoto 发表于 2015-1-29 21:39:18

用vl-remove-if 写个去除祖玛enlist的第1-4个元素,谢谢大侠

我想删除祖玛表的第1-4个元素,用vl-remove-if来一句话写,但是自己没整出来,只好到明经求助了。。

(setq a (list 1 2 3 4))
(vl-remove-if '(lambda (x) ...... enlist)
后面就不会了。。。。

aihuyujian 发表于 2015-1-29 22:57:47

cddddr 试试呗

katamoto 发表于 2015-1-29 23:01:01

楼上能帮我写一下吗?
或者不用vl-remove-if,能实现我的所要的删除表中指定位置的元素,指定位置是多个,在一个表内list0内,如
(2 3 7 11),删除表的第2、3、7、11号元素(我知道表是从0开始算的),怎么解决?

代码希望尽量简捷一点,

鱼与熊掌 发表于 2015-1-30 01:22:35

;来自黄名儒
;;除去表一部分
;;(enth 2 3 '(1 2 3 4 5))
(defun enth (from to lst / I L)
(setq i -1)
(foreach x lst
    (setq i (1+ i))
    (cond ((or (< i from) (> i to)) (setq l (cons x l))))
) ;_ 结束foreach
(REVERSE l)
)

鱼与熊掌 发表于 2015-1-30 01:25:46

;By 熊掌定制.
;CAD插件定制 QQ775452144
(defun cx-EListPo(lst e_lst)
        (vl-remove-if '(lambda(x)(member(vl-position x lst)e_lst))lst)
)

鱼与熊掌 发表于 2015-1-30 01:26:48

(cx-EListPo '(1 2 3 4 5) '(0 3 2))
=> '(2 5)
删除0位 3位 2位的元素.

sutai 发表于 2015-1-30 10:06:04

鱼与熊掌 发表于 2015-1-30 01:25 static/image/common/back.gif


好强大!又学到一招~

llsheng_73 发表于 2015-1-30 11:21:15

鱼与熊掌 发表于 2015-1-30 01:26 static/image/common/back.gif
(cx-EListPo '(1 2 3 4 5) '(0 3 2))
=> '(2 5)
删除0位 3位 2位的元素.

(CX-ELISTPO'(1 2 3 1 3 5)'(0 2))
(2 5)

llsheng_73 发表于 2015-1-30 11:31:20

(defun tt(lst en_lst / i a)
(setq i -1)
(reverse(repeat(length lst)
    (setq i(1+ i)
          a(if(member i en_lst)a(cons(nth i lst)a)))))
)
(tt'(1 2 3 1 3 5)'(0 2))
(2 1 3 5)

llsheng_73 发表于 2015-1-30 11:37:18

鱼与熊掌 发表于 2015-1-30 01:22 static/image/common/back.gif


(defun enth (from to lst / I L)
(setq i -1)
(foreach x lst
    (setq i (1+ i)
          l(if(<= from i to)l(cons x l)))
) ;_ 结束foreach
(REVERSE l)
)
页: [1] 2
查看完整版本: 用vl-remove-if 写个去除祖玛enlist的第1-4个元素,谢谢大侠