434939575 发表于 2015-8-2 17:15:43

再次请教一个表的问题

(defun c:tt ()
(setq a '(101 201 301 401))
(setq b '(102 202 302 402))
(setq c '(103 203))
(setq d '(104 204 304 ))
(setq aa (list a b c d))

(setq yy(mapcar '(lambda (x)
       (car x)
   )
    aa
));我只会到这里了 (101 102 103 104)
      )
;希望结果
((101 102 103 104)(201 202 203 204)(301 302 304)(401 402 ))感谢!

cable2004 发表于 2015-8-2 18:30:28

本帖最后由 cable2004 于 2015-8-2 18:42 编辑

(defun c:tt ()
(setq a '(101 201 301 401))
(setq b '(102 202 302 402))
(setq c '(103 203))
(setq d '(104 204 304))
(setq i (apply 'max (mapcar '(lambda (e)(length e)) (list a b c d))) lst nil)
(mapcar '(lambda (e)(vl-remove nil e)) (apply 'mapcar (cons 'list (mapcar '(lambda (e)(if (= i (length e)) e (progn (repeat (- i (length e)) (setq lst (cons nil lst))) (setq dd (append e lst)) (setq lst nil) dd)) )(list a b c d)))))
      )

nzl1116 发表于 2015-8-2 18:35:37

(defun tt (/ aa bb cc)
(setq aa '((101 201 301 401) (102 202 302 402) (103 203) (104 204 304)))
(setq cc nil)
(while aa
    (setq bb (mapcar 'car aa))
    (setq aa (vl-remove nil (mapcar 'cdr aa)))
    (setq cc (cons bb cc))
)
(reverse cc)
)

llsheng_73 发表于 2015-8-2 18:50:27

本帖最后由 llsheng_73 于 2015-8-3 11:08 编辑

(defun tt(aa / e)
(repeat(apply'max(mapcar'length aa))
    (setq e(cons(mapcar'car aa)e)
          aa(vl-remove'nil(mapcar'cdr aa))))
(reverse e)
)
(defun tt(aa / e)
(while(setq e(cons(mapcar'car aa)e)
       aa(vl-remove'nil(mapcar'cdr aa))))
(reverse e))
(tt'((101 201 301 401) (102 202 302 402) (103 203) (104 204 304)))
==>((101 102 103 104) (201 202 203 204) (301 302 304) (401 402))

易云网络 发表于 2015-8-2 19:18:16

nzl1116 发表于 2015-8-2 18:35 static/image/common/back.gif


(mapcar 'cdr aa)和(vl-remove nil (mapcar 'cdr aa))我测试结果一样,那为什么还要加vl-remove函数呢?请指教

易云网络 发表于 2015-8-2 19:21:15

补充一个图片

易云网络 发表于 2015-8-2 19:28:53

知道了 没有数据的时候 有的值会这NIL


守仁格竹GM 发表于 2015-8-3 09:30:42

(defun tt (aa / bb)
(while aa
    (setq bb (append bb (list(mapcar 'car aa))))
    (setq aa (vl-remove nil (mapcar 'cdr aa)))
)
bb
)
(defun tt (aa / n)
(setq n (apply 'max (mapcar 'length aa)))
(mapcar
    '(lambda(y) (vl-remove nil y))
    (apply 'mapcar
           (cons 'list
               (mapcar
                   '(lambda(x)
                      (repeat (- n (length x)) (setq x (append x '(nil))))
                      x
                   )
                   aa
               )
           )
    )
)
)
同楼上2位仁兄一样
页: [1]
查看完整版本: 再次请教一个表的问题