simon8001 发表于 2011-6-10 15:01:01

求助版主和高手 替换列表元素生成新的列表的问题(已完结)

本帖最后由 simon8001 于 2011-6-14 09:19 编辑

(defun c:f()
(setq x (list (list "55B" "23") (list "55A" "17") (list "69B" "23") (list "69A" "17")
       (list "08B" "23") (list "81A" "17") (list "95B" "23") (list "95A" "17")
       (list "09B" "23") (list "" "") (list "N" "")))
(setq en (nth 9 x))
(setq en-n (list(list "X" "")))
(setq en en-n)
;我这里不太会了!!
)

我想把x的第9个元素换成("X" "") 然后重新的生成x希望得到帮助!

caoyin 发表于 2011-6-10 15:19:57

本帖最后由 caoyin 于 2011-6-10 15:23 编辑

(setq x (list (list "55B" "23") (list "55A" "17") (list "69B" "23") (list "69A" "17")
       (list "08B" "23") (list "81A" "17") (list "95B" "23") (list "95A" "17")
       (list "09B" "23") (list "" "") (list "N" "")))
)
(setq I -1)
(mapcar '(lambda (X)
         (if (= (setq I (1+ I)) 9)
             '("X" "")
             X
         )
         )
      X
)
;;;--------------------------------------------
另:替换和第九个元素相同的所有元素
(subst'("X" "") (nth 9 X) X)

simon8001 发表于 2011-6-10 15:27:10

本帖最后由 simon8001 于 2011-6-10 15:35 编辑

回复 caoyin 的帖子

谢谢你!
C版 谢谢你mapcar函数我学会了!!

snddd2000 发表于 2011-6-10 15:38:29

组点表呢?

simon8001 发表于 2011-6-10 16:03:11

本帖最后由 simon8001 于 2011-6-10 16:11 编辑

回复 simon8001 的帖子
回复错了!!

simon8001 发表于 2011-6-10 16:10:43

本帖最后由 simon8001 于 2011-6-10 16:33 编辑

回复 caoyin 的帖子

单独的用确是可以实现
但加到了我的函数里 没有实现这个功能!
       (setq b3 '())
       (setq i 0)
       (setq n 1)
       (repeat (length xxb-kt)
         (setq en (nth i xxb-kt))
         (setq b3 (append b3 (list en)))
         ;(if (= (rem n 11) 0)
         (if (= (rem n 9) 0)
         (progn
             (setq b3 (append b3 (list (list "" ""))))
         )
         )
         (setq i (1+ i) n (1+ n))
       )
       (setq I 0)
(mapcar '(lambda (b3)
         (if (= (setq I (1+ I)) 10)
             '("N" "")
             b3
         )
         )
      b3
)
       (setq xxb-kt b3)

我描述一下 b3 是前面的程序生成的监视的结果如下
b3=(("QA" "17") ("QB" "26") ("19A" "17") ("19B" "23") ("03A" "17") ("03B" "23") ("19A" "17") ("19B" "23") ("17A" "17") ("" "") ("17B" "23") ("1965A" "1700-1") ("19B" "23") ("13A" "17") ("19B" "23") ("11A" "17") ("19" "23") ("19A" "17") ("19B" "23") ("" ""))
b3经过刚才的整理 第十个没有变成我所需要的! 您帮我理解下
b3==(("QA" "17") ("QB" "26") ("19A" "17") ("19B" "23") ("03A" "17") ("03B" "23") ("19A" "17") ("19B" "23") ("17A" "17") ("N" "") ("17B" "23") ("1965A" "17") ("19B" "23") ("13A" "17") ("19B" "23") ("11A" "17") ("19" "23") ("19A" "17") ("19B" "23") ("" ""))
不知道是哪里出现了问题

simon8001 发表于 2011-6-10 16:33:20

本帖最后由 simon8001 于 2011-6-10 16:34 编辑

好了 我知道怎么弄了我修改了一下就好了 加了一个条件 (repeat ll         
(setq en (nth i xxb-kt))
         (setq b3 (append b3 (list en)))
               (if (and (= n 9) (= (rem n 9) 0))
         (progn
             (setq b3 (append b3 (list (list "N" ""))))
         )
         )
         (if (and (/= n 9) (= (rem n 9) 0))
         (progn
             (setq b3 (append b3 (list (list "" ""))))
         )
         )
         (setq i (1+ i) n (1+ n))
       )就不用我之前问的问题了憋坏我了 !终于成功了 !
页: [1]
查看完整版本: 求助版主和高手 替换列表元素生成新的列表的问题(已完结)