三个数目一样的list函数合并问题。。。。
例如我有三个list表,{x1 x2…}{y1 y2…}{z1 z2…},如何合并为一个表{(x1 y1 z1)(x2 y2 z2) …} (list '(1 2) '(3 4) '(5 6))->((1 2) (3 4) (5 6))(append '(1 2) '(3 4) '(5 6))->((1 2 3 4 5 6))
(defun c:aaa ()
(setq aaa '(x1 x2 x3 x4))
(setq bbb '(y1 y2 y3 y4))
(setq ccc '(z1 z2 z3 z4))
(setq n (length aaa)
m 0
lst '()
)
(while (/= n m)
(setq lst1 (list (nth m aaa) (nth m bbb) (nth m ccc)))
(setq lst (cons lst1 lst))
(setq m (1+ m))
)
(reverse lst)
)
如果是把几个表中相同位置的元素提取合为一项呢? 回复 zhynt 的帖子
哈哈,谢谢,就是这个效果!………… 回复 tm20038175 的帖子
还可以加上三个表长度的判段,取最短表的长度为n 本帖最后由 caoyin 于 2011-7-2 15:32 编辑
;;这个方法无需判断各个表长度,自动取短
(mapcar '(lambda (x y z) (list x y z))
'(11 12 13 14 15)
'(21 22 23 24)
'(31 32 33 34 35 45 55)
)
->
((11 21 31) (12 22 32) (13 23 33) (14 24 34))
--------------------------------------------------------------------
;;
(setq A '((11 21 31) (12 22 32) (13 23 33) (14 24 34)))
(mapcar 'car A)->(11 12 13 14)
(mapcar 'cadr A)->(21 22 23 24)
(mapcar 'caddr A)->(31 32 33 34)
(mapcar 'last A)->(31 32 33 34)
本帖最后由 highflybir 于 2011-7-2 15:50 编辑
(defun trp (m)
(apply 'mapcar (cons 'list m))
)
例如
Command: (trp '((x1 x2 x3 x4 x5) (y1 y2 y3 y4 y5) (z1 z2 z3 z4 z5)))
((X1 Y1 Z1) (X2 Y2 Z2) (X3 Y3 Z3) (X4 Y4 Z4) (X5 Y5 Z5))
回复 caoyin 的帖子
高!太高 !言简意赅,大师级人物才写的出来啊。。。。。
赞一个!……… 回复 tm20038175 的帖子
8楼highflybir 版主才是大师级的
页:
[1]
2