在autolisp中操作列表
嗨,刚刚加入cadtutor。它已经帮了我很多。谢谢大家。我是Lisp的初学者,我想操作列表。
((1.y)(2.b)(3.d)(4.f)),这是一个列表。
我希望这个是(1.b),(2.y)这样。
2.我希望它是(1 2 3 4)(y b d f)
我知道你们都是专家,这篇文章会让你们都很沮丧,但从最近两天开始,我一直在尝试这样做,不知道我应该使用哪个功能。 那是(1.y)还是(1.y)?
随便。。如果是的话
(defun splt (lst / num alp)
(foreach itm (reverse lst)
(setq num (cons (car itm) num)
alp (cons (cdr itm) alp)
)
)
(list num alp)
)
(defun splt (lst / a b num alp)
(setq lst (reverse lst))
(while (setq a (car lst))
(setq b (cdr lst)
num (cons (car a) num)
alp (cons (cdr a) alp)
)
(setq lst b)
)
(list num alp)
)
对于#2,您可以使用(mapcar)
(setq lst '((1 . y)(2 . b)(3 . d)(4 . f)))
(setq l1 (mapcar 'car lst))
(setq l2 (mapcar 'cdr lst))
有很多方法可以做到这一点。祝你好运-大卫 我的版本,它并不比大卫的代码远。。
(setq lst '((1 . y) (2 . b) (3 . d) (4 . f)))
(mapcar (function (lambda (x)
(setq x1 (cons (car x) x1))
(setq x2 (cons (cdr x) x2))
)
)
lst
)
(reverse x1)
(reverse x2)
另一个:
(setq lst '((1 . y) (2 . b) (3 . d) (4 . f)))
(apply 'mapcar (cons 'list (mapcar '(lambda ( x ) (list (car x) (cdr x))) lst))) 另一个
(setq lst '((1 . y) (2 . b) (3 . d) (4 . f)))
(defun Picks (lst / i j)
(foreach x (reverse lst)
(setq i (cons (car x) i))
(setq j (cons (cdr x) j))
)
(princ i)
(princ j)
(princ)
)
(Picks lst) Thnx Tharwat,David和PBE。。。我有两个函数,mapcar和lambda。。。我得到了我的答案。
再次感谢各位。来自印度的感谢。
页:
[1]