改个稍复杂的
;;指定元素填充
;;lst --- 表或嵌套表
;;n --- 长度
;; --- 填充元素, 为表且第一元素为 T 是前填充
 - (defun List:FillGap (lst n ele / _fillgap)
- (defun _fillgap (lst n ele / l c)
- (setq l (length lst))
- (cond
- ((= n l) lst)
- ((< n l)
- (setq c (- l n))
- (if (and (listp ele) (= (car ele) T))
- (progn
- (setq lst (reverse lst))
- (repeat c
- (setq lst (cdr lst))
- )
- (reverse lst)
- )
- (progn
- (repeat c (setq lst (cdr lst)))
- lst
- )
- )
- )
- ((> n l)
- (setq c (- n l))
- (if (and (listp ele) (eq (car ele) T))
- (progn
- (setq ele (cadr ele))
- (repeat c
- (setq lst (cons ele lst))
- )
- lst
- )
- (progn
- (setq lst (reverse lst))
- (repeat c
- (setq lst (cons ele lst))
- )
- (reverse lst)
- )
- )
- )
- (t)
- )
- )
- (if (vl-some 'atom lst)
- (_fillgap lst n ele)
- (mapcar '(lambda (x / c)
- ;;(setq c (list:getColumnCount lst))
- (_fillgap x n ele)
- )
- lst
- )
- )
- )
_$ (list:fillgap '(1 2 2 3) 12 '(t nil))
(nil nil nil nil nil nil nil nil 1 2 2 3)
_$ (list:fillgap '(1 2 2 3) 12 nil)
(1 2 2 3 nil nil nil nil nil nil nil nil)
_$ (list:fillgap '(1 2 2 3) 12 '(1))
(1 2 2 3 (1) (1) (1) (1) (1) (1) (1) (1))
_$ (list:fillgap '(1 2 2 3) 12 '(t (1)))
((1) (1) (1) (1) (1) (1) (1) (1) 1 2 2 3)
__$ (list:fillgap '((1 2)(1 2 2 3)) 12 "")
((1 2 "" "") (1 2 2 3)) |