马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×

- (defun xdl-lst-getdups (lst / n nl same)
- (while lst
- (setq n (car lst))
- (if (not nl)
- (setq nl (list (list n)))
- (if (setq same (assoc n nl))
- (setq nl (subst (append (list n) same) same nl))
- (setq nl (append (list (list n)) nl))
- )
- )
- (setq lst (cdr lst))
- )
- (reverse nl)
- )
转换为元素、数量格式

- (defun xdl-lst-getdup (lst)
- (mapcar '(lambda (x) (cons (caar x) (length x)))
- (xdl-lst-getdups lst)
- )
- )
;;测试
_$ (xdl-lst-getdups '(1 2 3 4 1 1 1 1 1 1 5 5 5 55 5 6 7 8))
((1 1 1 1 1 1 1) (2) (3) (4) (5 5 5 5) (55) (6) (7) (8))
_$ (xdl-lst-getdups '(1 2 3 4 (1) (1) 1 1 1 1 5 5 5 55 5 6 7 8))
((1 1 1 1 1) (2) (3) (4) ((1) (1)) (5 5 5 5) (55) (6) (7) (8))
_$ (xdl-lst-getdup (xdl-lst-getdups '(1 2 3 4 (1) (1) 1 1 1 1 5 5 5 55 5 6 7 8)))
(((1 1 1 1 1) . 1) ((2) . 1) ((3) . 1) ((4) . 1) (((1) (1)) . 1) ((5 5 5 5) . 1) ((55) . 1) ((6) . 1) ((7) . 1) ((8) . 1))
_$ (xdl-lst-getdup (xdl-lst-getdups '(1 2 3 4 (1) (1) 1 1 1 1 5 5 5 55 5 6 7 8)))
((1 . 1) (2 . 1) (3 . 1) (4 . 1) ((1) . 1) (5 . 1) (55 . 1) (6 . 1) (7 . 1) (8 . 1))
_$ |