明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 541|回复: 2

[函数] 删除列表中指定索引位置处的元素

[复制链接]
发表于 2022-7-23 09:59 | 显示全部楼层 |阅读模式
本帖最后由 guosheyang 于 2022-8-11 11:31 编辑

       给lisp的初学者们共享个函数(高手请略过),删除列表中指定索引位置处的元素,有问题请反馈,谢谢!

;函数功能:删除列表中指定索引位置处的元素         
;参数:L 列表,index 要删除项的索引位置(从0开始)
;返回值:删除指定索引位置元素后的列表            
;测试
(ygs_del_by_index
  (setq L'(1 1 2 2 3 3 4 5 5 5 6 7 11 12 13 5 15 17 5 19 90 85 85 85 90 93 101))
  (setq index 16)
)
;主程序
(defun ygs_del_by_index(L index / NL)
(if(and(<= index(1-(length L)))(>= index 0))
  (progn
   (repeat index
     (setq nl(cons(car L )nl));新表
     (setq L(cdr L))
   )
    (append(reverse nl)(cdr L))
  )
  (princ(strcat"\n所指定的index超出列表范围," "请指定0-"(itoa (1-(length L)))"的正整数"))
)
)
代码二  简洁型

;(ygs_del_by_index L index)
(defun ygs_del_by_index(L index / I NL)
(setq nl nil i -1)
(foreach x L
   (if
    (/=(setq i(1+ i))index)
    (setq nl(cons x nl))
   )
)
  (reverse nl)
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-10-20 10:02 | 显示全部楼层
谢谢:P:P顶一下
发表于 2022-10-20 14:52 | 显示全部楼层
谢谢大师的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 06:10 , Processed in 0.554148 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表