明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2726|回复: 13

如何返回去除某元素后的表?

  [复制链接]
发表于 2005-1-30 16:45:00 | 显示全部楼层 |阅读模式
本人编程时需要在一个长表中随机去除某一个元素(实际是子表),然后在剩下的表中继续进行同样的操作,但从表中取某个元素容易,怎样才能得到去掉某个元素后的表呢?请各位高手帮忙,不胜感谢!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2005-1-30 19:46:00 | 显示全部楼层
也许你需要vl-remove函数!
发表于 2005-1-31 08:29:00 | 显示全部楼层
可以从表中逐个读出元素,然后判断这个元素是否满足你的条件,如满足条件,则写入另一个表中。循环读完即可。
 楼主| 发表于 2005-2-5 19:46:00 | 显示全部楼层

回复

谢谢,我用member函数和reverse函数以及append函数把问题给解决了,不过只是针对我的问题,因为我的问题中表的元素没有相同的。
发表于 2005-2-6 08:17:00 | 显示全部楼层
把你的解决方法帖上来呀,这样才有人和你探讨算法,共同学习。
 楼主| 发表于 2005-2-17 19:30:00 | 显示全部楼层
(defun slist(i blist)
(setq e (nth i blist))
(setq list2 (cdr (member e blist)))
(setq list1 (reverse (cdr (member e (reverse blist)))))
(setq blist (append list1 list2))
) 此方法适用于表中元素不相同的的情况。
发表于 2005-2-18 00:15:00 | 显示全部楼层
yaopx0782:如果表中不存在指定元素,6楼程序会出错,应该加上错误判断。
  1.   (DEFUN SLIST (ITEM LLIST)
  2.    (IF (MEMBER ITEM LLIST)
  3.      (APPEND
  4.        (REVERSE (CDR (MEMBER ITEM (REVERSE LLIST))))
  5.        (CDR (MEMBER ITEM LLIST))
  6.      )
  7.      LLIST
  8.    )
  9.   )
复制代码
发表于 2005-2-18 20:47:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2005-2-19 08:17:00 | 显示全部楼层
(defun nth-remove (f_n f_list / ) ;removes nth element from a list
(if (and (numberp f_n) (listp f_list))
(if (and (>= f_n 0) (< f_n (length f_list)))
(progn
(repeat f_n
(setq f_list (append (cdr f_list) (list (car f_list))))
)
(setq f_list (cdr f_list))
(repeat (- (length f_list) f_n)
(setq f_list (append (cdr f_list) (list (car f_list))))
)
)
)
)
f_list
)
发表于 2005-2-20 05:35:00 | 显示全部楼层
;;去除表中指定项
(defun zhy_drop (lst item)
(append (reverse (cdr (member item (reverse lst))))
(cdr (member item lst))
)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 16:36 , Processed in 0.199723 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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