对比mapcar ‘(lambda(x y …) 与 foreach n list () 的用法
本帖最后由 czcxxx 于 2015-10-26 10:49 编辑对比mapcar ‘(lambda(x y …) 与 foreach n list () 的用法
取两组表中相同位置的不同元素
_$ s1
(<图元名: 7ed69420> <图元名: 7ed69548> <图元名: 7ed69430> <图元名: 7ed69418> <图元名: 7ed69520> <图元名: 7ed69438> <图元名: 7ed69410> <图元名: 7ed694f8> <图元名: 7ed69440> <图元名: 7ed69550> <图元名: 7ed69598> <图元名: 7ed69558> <图元名: 7ed69428> <图元名: 7ed694d0> <图元名: 7ed695a0>)
_$ s1_
(<图元名: 7ed69420> <图元名: 7ed69538> <图元名: 7ed69430> <图元名: 7ed69418> <图元名: 7ed69510> <图元名: 7ed69438> <图元名: 7ed69410> <图元名: 7ed694e8> <图元名: 7ed69440> <图元名: 7ed69550> <图元名: 7ed69588> <图元名: 7ed69558> <图元名: 7ed69428> <图元名: 7ed694c0> <图元名: 7ed695a0>)
_$
(setq ss1 '())
(setq
ss1 (last (mapcar '(lambda (z) (setq ss1 (append ss1 z)))
(VL-REMOVE-IF
'not
(mapcar '(lambda (x y)
(IF (NOT (EQUAL X Y))
(list X y)
)
)
s1
s1_
)
)
)
)
)
(setq ss1 '())
(setq ss1 (foreach n (VL-REMOVE-IF
'not
(mapcar '(lambda (x y)
(IF (NOT (EQUAL X Y))
(list X y)
)
)
s1
s1_
)
)
(setq ss1 (append ss1 n))
)
)
(<图元名: 7ed69548> <图元名: 7ed69538> <图元名: 7ed69520> <图元名: 7ed69510> <图元名: 7ed694f8> <图元名: 7ed694e8> <图元名: 7ed69598> <图元名: 7ed69588> <图元名: 7ed694d0> <图元名: 7ed694c0>)
(apply 'append (mapcar '(lambda(x y) (if (equal x y) nil (list x y))) s1 s1_))
谢谢USER2128 !!
我没有真正理解 append 函数,
$ (apply 'append (list '(12 23)'(45 32)'(123) ))
(12 23 45 32 123)
_$ (apply 'append (list '(12 23) nil '(45 32) nil '(123) nil))
(12 23 45 32 123)
_$ (apply 'append (list '(12 23) nil '(45 32) nil '(123) nil 45))
; 错误: 参数类型错误: listp 45
你的指点让我加深理解之。
谢谢!!! 基本功,支持一下
页:
[1]