乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 120|回复: 3

删除列表中指定值中的一个值(若有多个重复值只删除第一个,区别于vl-remove的全部...

[复制链接]

15

主题

227

帖子

20

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
276
发表于 2022-7-23 09:48:00 | 显示全部楼层 |阅读模式
给lisp的初学者们分享个自定义函数(高手请略过) ,删除列表中指定值中的一个值(若有多个重复值只删除第一个,区别于vl-remove的全部删除),若有问题请反馈,谢谢!
;函数功能:删除表中指定值中的一个(若有多个重复值只删除第一个,区别于vl-remove的全部删除)
;参数:L列表 del_item要删除的一个元素值   
;返回值:删除一项指定值后的列表   
;测试
(ygs_del_single
  (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 del_item 2)
)
;主程序
(defun ygs_del_single(L del_item / NL WZ)
(if(vl-position del_item L)
  (progn
   (setq wz(vl-position del_item L ))
   (repeat wz
     (setq nl(cons(car L )nl));新表
     (setq L(cdr L))
   )
    (append(reverse nl)(cdr L))
  )
   (princ "\ndel_item不是所指定列表的成员")
)
)
回复

使用道具 举报

2

主题

21

帖子

3

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-24 18:55:00 | 显示全部楼层

(defun vv (l k / b)
  (if (vl-some '(lambda (x) (= x k)) l)
    (progn
      (while (not (= (car l) k))
        (setq b        (cons (car l) b)
              l        (cdr l)
        )
      )
      (append (reverse b) (cdr l))
    )
    (princ "\ndel_item不是所指定列表的成员")
  )
)
回复

使用道具 举报

15

主题

227

帖子

20

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
276
发表于 2022-7-24 19:53:00 | 显示全部楼层

嗯   改成while循环  看起来简洁点  也可以改为mapcar的循环
回复

使用道具 举报

2

主题

21

帖子

3

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-24 20:31:00 | 显示全部楼层

(setq Ls '(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)
)
(vv 1 ls)
(defun vv (k l)
  (vl-remove nil
             (mapcar '(lambda (x)
                        (if (= x k)
                          (setq        x nil
                                k nil
                          )
                          x
                        )
                      )
                     l
             )
  )
)
这样吗
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 01:32 , Processed in 0.344397 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表