找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1532|回复: 17

[求助] [求助]:怎么修改表中的一个数据

[复制链接]
发表于 2004-2-12 21:37:37 | 显示全部楼层 |阅读模式

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

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

×
用什么函数可以只修正表中的一个数据?
例如
(setq a '(1 2 3 4 5))
然后我要让
a=  '(1 3 3 4 5)

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-2-13 16:49:38 | 显示全部楼层
发现是版主写错了一个字,subst啊
还有能指定是第二元素,这样吗?(就是index=1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-2-13 20:20:54 | 显示全部楼层
但是这样不就无法分辨同一表中内容相同的项了吗?
如:我想让'(2 2 2 2 2)变成'(2 3 2 2 2)
就无法使用下面的指令了.
(setq a '(2 2 2 2 2))
(subst 3 (- (nth 2 a) 1) a)

本人比较麻烦,请版主见谅.

还有我觉得你的应该是这样用吧:
(subst <要替换的值> (nth (- <替代第N个元素> 1) <表>) <表>)
因为索引号是从0开始的.
请斧正
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-13 20:48:16 | 显示全部楼层

  1. ; (xl-rep lst i a) = 将表lst第i个元素替换为a,返回新表.-----------------------------陌生人.2004.2
  2. ; eg: (xl-rep '(2 2 2 2) 1 "a") -> (2 "a" 2 2)
  3. (defun xl-rep (lst i a / n nlst)
  4.   (setq n 0)
  5.   (foreach x lst
  6.     (setq nlst (cons  (if (= i n) a x) nlst)  n (1+ n))
  7.   )(reverse nlst)
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-13 21:02:30 | 显示全部楼层
这个

  1. (defun dtf (NB N LST / x i)
  2. (setq i 0 )
  3. (mapcar
  4.   '(lambda (x)
  5.      (setq i (+ i 1))
  6.      (if (= i N) (setq x NB))
  7.      (setq x x)
  8.      )
  9.   LST
  10.   )
  11.   )

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

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-16 14:34:46 | 显示全部楼层
“一个日文网页”上的函数

  1. ;; 用 a 置換表 l 中 第 n 个元素;
  2. ;|
  3. 用法:(subst-n '(0 2) '(99 22) '((1 2 3) 2 55 99 66))       替换第一个子表第三项
  4.                                    ((1 2 (99 22)) 2 55 99 66)
  5.       (subst-n '(2 1) '(99) '(1 2 (55) 99 66))   替换第二个子表第二项
  6.                                   (1 2 (55 ((99))) 99 66)
  7.       (subst-n 2.0 '(99) '(1 2 55 99 66)) 替换第二个原子
  8.                              (1 2 (99) 99 66)
  9. |;
  10. (defun subst-n (n a l)
  11.   (cond
  12.     ((numberp n)                        ;整数或实数
  13.      (if (zerop n)
  14.        (append (list a) (cdr l))        ;第一个
  15.        (cons (car l) (subst-n (1- n) a (cdr l))) ;
  16.      )
  17.     )
  18.     ((listp n)                                ;表
  19.      (cond
  20.        ((equal (length n) 1)                ;替换单项
  21.         (if (zerop (car n))
  22.           (append (list a) (cdr l))
  23.           (cons (car l) (subst-n (1- (car n)) a (cdr l)))
  24.         )
  25.        )
  26.        ((> (length n) 1)                ;替换子表项
  27.         (if (zerop (car n))
  28.           (cons (subst-n (cdr n) a (car l)) (cdr l))
  29.           (cons
  30.             (car l)
  31.             (subst-n (append (list (1- (car n))) (cdr n)) a (cdr l))
  32.           )
  33.         )
  34.        )
  35.      )
  36.     )
  37.   )
  38. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-16 21:52:30 | 显示全部楼层
抗日到底!我们能比小日本做的更好!
[/SIZE] [php]
;|"(xl-sub-i <新项> <序号i层次表> <表>) = 按序号层次表替换表元素 v0.1---------------陌生人。2004.2;
返回: 成功->返回新表。不成功返回原表.
序号从0起算,支持任意深度的层次!
测试: (xl-sub-ilst "a" '(1 1 0) '(0 (1 ((6 8) 9) 7) 2 3 4 5)) -> (0 (1 ("a" 9) 7) 2 3 4 5); ;替换表中第一项中第一项中第0项.
       (xl-sub-ilst "a" '(1 1) '(0 (1 ((6 8) 9) 7) 2 3 4 5))   -> (0 (1 "a" 7) 2 3 4 5)
       (xl-sub-ilst "a" '(2 1 0) '(0 (1 ((6 8) 9) 7) 2 3 4 5)) -> (0 (1 ((6 8) 9) 7) 2 3 4 5)
"|;
(defun xl-sub-ilst (a ilst LST / n)
(if (and (listp lst)(listp ilst)(setq n -1)) ;加入对lst,ilst表的 判断.
   (apply 'append
     (mapcar '(lambda (x)
                   (setq n (1+ n))
              (cond
                ((= (car ilst) n) (if (= 1 (length ilst)) (list a) (list(xl-sub-ilst a (cdr ilst) x))))
                (T (list x))
              ))
              LST
     )
   )
   lst
)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-17 00:40:34 | 显示全部楼层
最初由 陌生人 发布
[B]抗日到底!我们能比小日本做的更好!
[/SIZE] [php]
;|"(xl-sub-i <新项> <序号i层次表> <表>) = 按序号层次表替换表元素 v0.1---------------陌生人。2004.2;
返回:... [/B]



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

使用道具 举报

发表于 2004-2-17 01:04:13 | 显示全部楼层
xl-sub-i -> xl-sub-ilst


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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-17 01:09:45 | 显示全部楼层
最初由 陌生人 发布
[B]

?什么意思? [/B]

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

使用道具 举报

发表于 2004-2-17 01:51:35 | 显示全部楼层
哦,哈哈,谢谢。
xl-sub-i  是对单个(仅1重)表项替换的。xl-sub-ilst是对深层表项替换的,说明里面忘了改了:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-2-18 01:01:46 | 显示全部楼层
最初由 陌生人 发布
[B]抗日到底!我们能比小日本做的更好!
[/SIZE] [php]
;|"(xl-sub-i <新项> <序号i层次表> <表>) = 按序号层次表替换表元素 v0.1---------------陌生人。2004.2;
返回:... [/B]


象ea贴的一样,ilst应该能支持的 不仅仅是表,还应该可以是数字.

  1. (defun xl-sub-ilst (a ilst LST / n)
  2. (setq n -1)
  3. (cond
  4.    ((null ilst) a)
  5.    ((atom ilst)(xl-sub-ilst  a(list ilst )lst))
  6.       ((listp lst)
  7.    (apply 'append
  8.      (mapcar '(lambda (x)
  9.                (setq n (1+ n))
  10.           (cond
  11.             ((= (car ilst) n) (if (= 1 (length ilst)) (list a) (list(xl-sub-ilst a (cdr ilst) x))))
  12.             (T (list x))
  13.           ))
  14.           LST
  15.      )
  16.    )
  17.    lst
  18. )
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 11:54 , Processed in 0.222806 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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