czcxxx 发表于 2015-10-26 10:17:10

对比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>)

USER2128 发表于 2015-10-26 13:47:57

(apply 'append (mapcar '(lambda(x y) (if (equal x y) nil (list x y))) s1 s1_))

czcxxx 发表于 2015-10-27 08:53:09

谢谢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
你的指点让我加深理解之。
谢谢!!!

leon904828888 发表于 2017-8-28 21:30:35

基本功,支持一下
页: [1]
查看完整版本: 对比mapcar ‘(lambda(x y …) 与 foreach n list () 的用法