- 积分
- 12349
- 明经币
- 个
- 注册时间
- 2002-10-21
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2005-1-12 11:13:00
|
显示全部楼层
网上的:
http://www.xdcad.net/forum/showthread.php?postid=1394244#post1394244
;;************************************************************ 3 *****;;; ;| (subilst a ilst lst) = 表项替换,支持子表.----------------ok!---------梦断江南.2004.10 功能: 用a替换ilst中指定位置的lst的项. 参数: a = 要替换的项,可是元素或表. ilst = 整数或整数定位表,如'(2 3 1),将替换表中第二项的第三项的第一个项.' lst = 要被替换的表. 返回: 成功:替换后的新表. 失败,返回原表. 说明: 可单独运行,无需加载其他函数. 用了第归的方法. 测试: (setq a 333 ilst '(2 3 1) lst '(0 0 (0 0 0 (0 0)) 0 )) (subilst a 2 lst) -> (0 0 333 0) (setq ilst 2) (subilst a ilst lst) -> (0 0 (0 0 0 (0 333)) 0) (subilst '333 '(2 3 5) lst) -> (0 0 (0 0 0 (0 0)) 0) |; ;;*******************************************************************************;;; (defun subilst (a ilst lst / n) (setq n -1) (if (atom ilst)(setq ilst (list ilst))) (mapcar '(lambda(x) (setq n (1+ n)) (if (= (car ilst) n) (if (= 1 (length ilst)) a (subilst a (cdr ilst) x)) x ) ) lst ) ) |
|