乐筑天下

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

自定义函数 改进vl-position函数对重复元素的首位置判断为全位置判断

[复制链接]

15

主题

227

帖子

20

银币

后起之秀

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

铜币
276
发表于 2022-7-22 09:46:00 | 显示全部楼层 |阅读模式
给朋友们分享个自定义函数,列出重复元素在列表中的所有位置(对vl-position函数的适当改进),请大家测试并优化下,谢谢!
;自定义函数名称 ygs-vl-position 作者ygs-羊羊羊
;列出表L中某个重复要素en的所有位置列表,改进vl-position函数对重复元素的首位置判断为全位置判断
;参数:L 含有重复元素的列表,en 列表中的某元素项(可能为重复元素)                           
;返回值:位置数字或位置的列表(重复元素en则返回位置数字列表,若en不是L的成员,则返回nil)                                
;测试 (setq l'( 2 5 6.6 5 8.982 7 2.3 7 3.4 6 8.982 5 6 1.6 9 3.4 2 3 7 8.5 8.982 9))                        
;    (ygs-vl-position (setq en 9) L)                                                         
(defun ygs-vl-position(L en / CS PDZ WZB ZCS)
(setq zcs 0)
(while(setq pdz(vl-position en L))
  (setq wzb(cons(+ zcs pdz)wzb))
  (repeat(setq cs(1+ pdz))
         (setq l(cdr l))
  )
  (setq zcs(+ cs zcs))
)
(reverse wzb)
)
回复

使用道具 举报

61

主题

718

帖子

13

银币

中流砥柱

Rank: 25

铜币
960
发表于 2022-7-22 10:15:00 | 显示全部楼层

基于vl-position的扩展-任意元素在表中所有出现位置、表中各元素所有出现位置
  1. (defun mposition(lst ens / n);;;列出ens表内各个元素的lst中所有出现位置
  2.   (setq n(length lst))
  3.   (mapcar(function(lambda(x / i l l1)
  4.         (setq l lst)
  5.         (while(setq i(vl-position x l))
  6.           (setq l1(cons(+ i n(-(length l)))l1)
  7.           l(nthcdr(1+ i)l)))
  8.         (reverse l1)))ens))

(mposition'(2 5 6.6 5 8.982 7 2.3 7 3.4 6 8.982 5 6 1.6 9 3.4 2 3 7 8.5 8.982 9)'(2 7))
((0 16) (5 7 18))
回复

使用道具 举报

38

主题

333

帖子

13

银币

后起之秀

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

铜币
480
发表于 2022-7-22 10:09:00 | 显示全部楼层
(defun ygs-dup-en-pos (en L / WZB ZCS)
  (setq zcs 0)
  (mapcar '(lambda (x)
             (setq zcs (1+ zcs))
             (if (= x en)
               (setq wzb (cons zcs wzb))
             )
           )
          l
  )
  (reverse wzb)
)
回复

使用道具 举报

15

主题

227

帖子

20

银币

后起之秀

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

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

谢谢你的优化  看起来清爽多了!
回复

使用道具 举报

15

主题

227

帖子

20

银币

后起之秀

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

铜币
276
发表于 2022-7-22 10:25:00 | 显示全部楼层

好的  谢谢!
回复

使用道具 举报

15

主题

227

帖子

20

银币

后起之秀

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

铜币
276
发表于 2022-7-22 11:17:00 | 显示全部楼层

这个nthcdr 会提高效率   但不是所有电脑的CAD都有   自己用可以  在通用性上还是差一些
回复

使用道具 举报

61

主题

718

帖子

13

银币

中流砥柱

Rank: 25

铜币
960
发表于 2022-7-22 11:24:00 | 显示全部楼层

很多隐藏函数效率相当高,多加载一个fas是值得的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 01:42 , Processed in 0.470792 second(s), 66 queries .

© 2020-2025 乐筑天下

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