找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 859|回复: 9

[编程申请]:如何删除表中的某个元素?

[复制链接]
发表于 2004-12-5 23:09:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
要删除选择集中的某个元素,可如下处理:
(entdel  (ssname ss i))
若要删除一个表中的第i个元素,然后返回新表,请问该如何处理.
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-6 03:13:22 | 显示全部楼层
使用ET支持的内部函数:(acet-list-remove-nth n lst) 。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-6 22:56:15 | 显示全部楼层
谢谢楼上指教。
“ET支持的内部函数”是什么函数?自定义函数吗?
直接用LISP该如何实现?
再谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-6 23:42:22 | 显示全部楼层
测试:
命令: (test 4 (list 44 45 46 47 48 49))
(44 45 46 48 49)
[php]
(defun test (n lst / aaa)
  (setq        aaa lst)
  (repeat (- n 1)
    (setq aaa (vl-remove (car aaa) aaa))
  )
  (setq lst (vl-remove (car aaa) lst))
  lst
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-6 23:59:26 | 显示全部楼层
谢谢!
终于在书上找到:
语法

     (vl-remove  element-to-remove  list)

功能

     删除表中的元素。

说明

1)参数 element-to-remove 为要删除的元素的值。可以为任意 LISP 数据类型。

2)list 为任意表。

返回值:

list,包括删除了与 element-to-remove 相等的元素后的所有元素。

样例:

_$ (vl-remove 0 (list pi 0 "123"))

(3.14159  "123")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-7 02:57:05 | 显示全部楼层
[QUOTE]最初由 agang198 发布
[B]谢谢楼上指教。
“ET支持的内部函数”是什么函数?。。。.[/B]/QUOTE]
只要安装了ET工具,便可直接调用。
例如4楼的例子,健入:
(acet-list-remove-nth 4 (list 44 45 46 47 48 49))
返回:(44 45 46 47 49)
注意; 和(nth n lst)函数一样, N=0 表示第一个元素,N=4 为第五个元素。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-9 14:02:33 | 显示全部楼层
4楼主的程序,有一点小bug。请测试:
(test 2 '(2 2 2 5 8 3))
(2 2 2 8 3)
(test 1 '(2 2  5 8 3))
(5 8 3)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-9 23:37:47 | 显示全部楼层
[php]
;;删除表中的某个元素
(defun test (n lst / b n1 n2 a)
  (setq        b  '()
        n1 (length lst)
        n2 0
  )
  (while (< n2 n1)
    (if        (/= n2 (- n 1))
      (progn
        (setq a (nth n2 lst))
        (setq b (append b (list a)))
      )
    )
    (setq n2 (+ 1 n2))
  )
  b
)
[/php]
测试:
命令: (test 3 '(2 3 3 3 4 5 6 78))
(2 3 3 4 5 6 78)
命令: (test 2 '(2 2 2 5 8 3))
(2 2 5 8 3)
满足要求!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-11 12:46:08 | 显示全部楼层
楼上的程序很不错啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-12 08:18:47 | 显示全部楼层
最初由 agang198 发布
[B]谢谢!
终于在书上找到:
语法

     (vl-remove  element-to-remove  list)

功能

     删除表中的元素。

说明

1)参数 element-to-remove 为要删除的元素的值。可以为任意 LISP 数据类型。

2)l... [/B]


你的題目是問"第幾個",現在你說找到答案,結果是說"那一個"?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-22 04:15 , Processed in 0.248282 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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