xiaoliu 发表于 2004-6-3 16:53:00

关于list

有一个list :               (               ( 1 a ) ( 2 b ) ( 3 c) ( 4 d ) (5        e ))       ,如何将它变为


( (1 e) ( 2 d) (3 c ) (        4 b) (5 a))                       就是把他的每一项的第二项reverse一下,如何实现,


我的程序里的list 有360项,大家说一个方法,不止限于5项

龙龙仔 发表于 2004-6-3 17:12:00

(setq LST '((1 A) (2 B) (3 C) (4 D) (5 E)))<BR>(setq LST (reverse LST))<BR>(setq LEN (1+ (length LST)))<BR>(mapcar        '(lambda (X)<BR>                       (list (- LEN (car X)) (cadr X))<BR>       )<BR>        LST<BR>)<BR>

ll_j 发表于 2004-6-3 17:17:00

(defun rev(alist / blist)<BR>       (setq blist (reverse alist))<BR>       (mapcar<BR>                       '(lambda(x y)<BR>                                               (list (car x) (cadr y))<BR>                               )<BR>                       alist<BR>                       blist<BR>       )<BR>)

meflying 发表于 2004-6-3 17:22:00

再简一下...


(defun rev(alist / )<BR>       (mapcar<BR>                       '(lambda(x y)<BR>                                               (list (car x) (cadr y))<BR>                               )<BR>                       alist<BR>                       (reverse alist))<BR>)

无痕 发表于 2004-6-3 20:08:00

(mapcar 'list (mapcar 'car lst)(mapcar 'cadr (reverse lst)))
页: [1]
查看完整版本: 关于list