[求助] 如何用foreach 修改list表中的某个数据
如何用foreach 修改list表中的某个数据如我想对表s'(1 2 3 ) 修改为 '(2 3 4 ) 或其他
//用简单的代码调试了一下,这样并未改变s表的数据。
(defun c:jj ()
(setq s (list 1 2 3))
(foreach n s (setq n (+ n 1)))
(foreach n s (print n))
(princ "\n")
)
谢谢
哈哈,这样当然不行了,你没更新,简单的MAPCAR,复杂的SETQ,赋值找对对像,呵呵 好像,很难接收,数据类型都不一样。一个是表s,一个是原子n
我用Subst函数 试一下,可是所有都替换。
有没有只对会后一个原子替换的
例如'(1 2 3 )替换为'(1 2 5 )的。
命令: (setq a '(1 2 3))
(1 2 3)
命令: (setq b (subst 5 (last a) a))
(1 2 5)
(defun c:jj ()
(setq s (list 1 2 3))
(setq lst (list))
(foreach n s (setq list (append lst (list (1+ n )))))
(foreach n lst (print n))
(princ "\n")
)
(defun c:jj ()
(setq s (list 1 2 3))
(setq lst (list))
(foreach n s (setq list (append lst (list (1+ n )))))
(foreach n lst (print n))
(princ "\n")
)
yshf的方法,如果
(setq a '(1 2 2))
setq b (subst 5 (last a) a))
(1 5 5),我想要(1 2 5),
这样的buger发生的概率很大的 (setq a '(1 2 2))
(setq b (reverse (cons 5 (cdr (reverse a)))))
页:
[1]
2