本帖最后由 fangmin723 于 2019-8-1 08:57 编辑
 - ;;说明:列表更改子项
- ;;参数:lst:列表-list
- ;;参数:n:更改项索引值-int
- ;;参数:item:更改后的值
- ;;返回:当n小于列表长度时,返回更改后的列表;否则则返回传入的lst列表。
- (defun lst-append-nth(lst n item)
- (if (< n (length lst))
- (progn
- (setq i 0 mylst nil)
- (foreach itm lst
- (if (= i n)
- (progn
- (if (and (/= itm nil) (listp itm))
- (setq mylst (append mylst (list (append itm (list item)))))
- (if (= itm nil)
- (setq mylst (append mylst (list item)))
- (setq mylst (append mylst (list (list itm item))))
- )
- )
- (setq i (+ i 1))
- )
- (setq mylst (append mylst (list itm)) i (+ i 1))
- )
- )
- mylst
- )
- (progn
- (princ "\n错误:索引值超出索引界限!")
- lst
- )
- )
- )
- (setq lst '(nil nil 0 nil nil nil nil nil nil nil) j 1)
- (repeat 10
- (setq lst (lst-append-nth lst 2 j) j (+ j 1))
- (print lst)
- (princ)
- )
- (princ "\n============================================")
- (repeat 10
- (setq lst (lst-append-nth lst 5 j) j (+ j 1))
- (print lst)
- (princ)
- )
- (princ "\n============================================")
- (setq lst (lst-append-nth lst 5 '(1 2 3 4 5 6)))
- (print lst)
- (princ)
|