simon8001 发表于 2011-6-13 15:18:03

求助版主和各位朋友帮看下指定元素的问题 (已完结)

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

(defun c:ff()
(setq xxb (list(list"S1" "26") (list"09" "20") (list"09" "26") (list"09" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"10" "20") (list"19" "26") (list"S" "") (list"10" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"11" "20") (list"11" "26") (list"10B" "20") (list"11A" "26") (list"11B" "20") (list"11A" "26") (list"X" "")(list"X" "")))
(setq bb1(length xxb))
(setq a1(nth(- bb1 1)xxb))
(setq a2(nth(- bb1 2)xxb))
       (if(and (= a1 (list"X" ""))(= a2 (list"X" "")));是(list"X" "")还是什么我就是这里不清楚了!
    (cond(setq l3 (reverse xxb))
            (setq xxb (cdr l3))
            (setq xxb (reverse xxb))
      (setq bb1(- bb1 1))))
)

目的很明确,把最后一个(“x” “”)删除掉。应该是在 (if(and (= a1 (list"X" ""))(= a2 (list"X" "")))这里出问题了, 我试过了几次不知道应该怎么样正确指定(“x” “”)这个元素了!!
我必须要这么处理这个表,因为他是我大程序里的一个特殊情况!希望得到你们的帮助!!

我再描述的明确一些,表xxb中有两个("X/N" ""),我要生成只有一个("X/N" "")的表,其他的元素不变!
我编的程序目的是想判断,最后一个表和倒数第二个表里的元素如果都是("X/N" ""),就保留一个,然后执行以后的程序!!

我担心的是如果遇到我想要的相同的列表的情况,仅用判断表是不是相等的方法来做,而不判断里面的具体元素是不是相同,就会丢失元素!!


先 谢谢各位朋友了!又麻烦你们了!!



Andyhon 发表于 2011-6-13 16:11:33

这样可以吗?
Command: (butlast xxb)
(("S1" "26") ("09" "20") ("09" "26") ("09" "20") ("10" "26") ("10" "20") ("10"
"26") ("10" "20") ("19" "26") ("S" "") ("10" "20") ("10" "26") ("10" "20")
("10" "26") ("11" "20") ("11" "26") ("10B" "20") ("11A" "26") ("11B" "20")
("11A" "26") ("X" ""))

simon8001 发表于 2011-6-13 16:27:14

本帖最后由 simon8001 于 2011-6-13 16:28 编辑

回复 Andyhon 的帖子

我试试看能不能满足我的要求!!先谢谢。

您好:
   我看过了,这样好像不能满足我的要求,因为我这里出现在只是一个特殊情况的处理,如果按照您的方法做下去,我就会丢表的!再次谢谢您!!

Andyhon 发表于 2011-6-13 16:52:46

本帖最后由 Andyhon 于 2011-6-13 16:53 编辑

...一个特殊情况的处理...

请举例说明会丢表的情况...

xshrimp 发表于 2011-6-13 17:06:47

本帖最后由 xshrimp 于 2011-6-13 17:07 编辑

看不懂你想干什么.
判断表是否相等用equal
(and      (equal a1 (list "X" ""))
      (equal a2 (list "X" ""))
      )
另外你的cond 函数用的有问题.不知道你想干什么,应该换为progn ????

198526 发表于 2011-6-13 17:25:14

(defun c:ff()
(setq xxb (list(list"S1" "26") (list"09" "20") (list"09" "26") (list"09" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"10" "20") (list"19" "26") (list"S" "") (list"10" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"11" "20") (list"11" "26") (list"10B" "20") (list"11A" "26") (list"11B" "20") (list"11A" "26") (list"X" "")(list"X" "")))
(setq bb1(length xxb))
(setq a1(nth(- bb1 1)xxb))
(setq a2(nth(- bb1 2)xxb))
       (if(and (= (car a1) "X")(= (car a2) "X"));不知道你说的(list"X" "")是不是说表的第一个元素是"X" 后面的不管是什么都不要了。如果是的话可以这样改
    (cond(setq l3 (reverse xxb))
            (setq xxb (cdr l3))
            (setq xxb (reverse xxb))
      (setq bb1(- bb1 1))))
)

问题要问在点子上

simon8001 发表于 2011-6-13 18:35:07

回复 Andyhon 的帖子

我做的一个大程序里,就是有好多这样的表,我要把这些表填到表格里,如果按照您的方法做了,每个表的最后一个元素就会丢失填不到我的块的表格里。
呵呵

simon8001 发表于 2011-6-13 18:38:05

回复 198526 的帖子

xxb这个表由22个子表组成,最后的21和22个是相同的元素,我要做的是把最后的第22个元素删除掉,重新生成一个没有第22格元素的xxb。
(setq xxb (list(list"S1" "26") (list"09" "20") (list"09" "26") (list"09" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"10" "20") (list"19" "26") (list"S" "") (list"10" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"11" "20") (list"11" "26") (list"10B" "20") (list"11A" "26") (list"11B" "20") (list"11A" "26") (list"X" "")(list"X" "")))
要生成这样的表:
(setq xxb (list(list"S1" "26") (list"09" "20") (list"09" "26") (list"09" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"10" "20") (list"19" "26") (list"S" "") (list"10" "20") (list"10" "26") (list"10" "20") (list"10" "26")
       (list"11" "20") (list"11" "26") (list"10B" "20") (list"11A" "26") (list"11B" "20") (list"11A" "26") (list"X" "")))

simon8001 发表于 2011-6-13 18:40:25

回复 xshrimp 的帖子

我需要的就是判断表是否相等

Andyhon 发表于 2011-6-13 19:09:35


...
    (setq xxb
      (list
         (list "S1" "26")
         (list "09" "20")
         (list "09" "26")
         (list "09" "20")
         (list "10" "26")
         (list "10" "20")
         (list "10" "26")
         (list "10" "20")
         (list "19" "26")
         (list "S" "")
         (list "10" "20")
         (list "10" "26")
         (list "10" "20")
         (list "10" "26")
         (list "11" "20")
         (list "11" "26")
         (list "10B" "20")
         (list "11A" "26")
         (list "11B" "20")
         (list "11A" "26")
         (list "X" "")
         (list "X" "")
      )
    )
   
    (setq bxx (reverse xxb))
    (if (equal (car bxx) (cadr bxx))
      (reverse (cdr bxx))
      xxb
   
    )
...

页: [1] 2
查看完整版本: 求助版主和各位朋友帮看下指定元素的问题 (已完结)