明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1267|回复: 8

[函数] 自定义nthcdr

  [复制链接]
发表于 2022-9-21 10:37:37 | 显示全部楼层 |阅读模式
(tranf 'nthcdr)

(nthcdr 7 '(0 1 2 3 4 5 6 7 8))                ;==>(7 8)

(defun nthcdr1 (n L)
  (repeat (/ n 4) (setq L (cddddr L)))
  (repeat (rem n 4) (setq L (cdr L)))
)
(nthcdr1 7 '(0 1 2 3 4 5 6 7 8));==>(7 8)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-9-21 13:46:47 | 显示全部楼层
大佬高产。感谢分享。

点评

我没有验证过,据说n很大时,一次性cddddr效率较高  发表于 2022-9-21 14:10
发表于 2022-9-21 14:06:17 | 显示全部楼层
(defun nthcdr (n lst) (repeat n (setq lst (cdr lst))))
(nthcdr 5 '(0 1 2 3 4 5 6 7 8)) ;==> (5 6 7 8)
发表于 2022-9-21 15:39:47 | 显示全部楼层
谢谢两位大佬分享源码
发表于 2022-9-22 08:53:59 | 显示全部楼层
经测试    数据量大时还是内部函数那个效率稍点   就是不知道稳定不

点评

大部分肯定是稳定的。  发表于 2022-9-22 08:58
发表于 2022-9-22 11:55:04 | 显示全部楼层
其实直接写个list切片函数即可 (list_slice iFrom iTo , 负值则从右向左)

点评

主要是考虑效率的问题,还是直接用隐藏函数好。  发表于 2022-9-22 13:07
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 19:32 , Processed in 0.167680 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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