liminnet 发表于 2008-10-17 14:42:00
nonsmall 发表于 2008-10-17 15:13:00
本帖最后由 作者 于 2008-10-17 16:38:11 编辑 <br /><br /> <p>(defun sublist (lst be end / new_list)<br/> (setq end (+ be end -3) be (- be 2));为了和substr一样<br/> (while (<= be end)<br/> (setq new_list (append new_list (list (nth (setq be (1+ be)) lst))))<br/> )<br/>)</p><p><br/>(sublist (list 1 2 3 4 5 6 7 8 9) 3 6)</p><p>(3 4 5 6 7 8)</p>liminnet 发表于 2008-10-17 16:05:00
nonsmall 发表于 2008-10-17 16:31:00
本帖最后由 作者 于 2008-10-17 16:43:29 编辑 <br /><br /> <p>命令: (ko-substr-<list (list 1 2 3 4) 2 7)<br/>nil</p><p>命令: (ko-substr-<list (list 1 2 3 4) 2 4)<br/>(2 3 4 nil)</p><p>命令: (substr "1234" 2 7)<br/>"234"</p><p>有错误;看来还不是99.9%</p>nonsmall 发表于 2008-10-17 16:37:00
本帖最后由 作者 于 2008-10-17 17:00:23 编辑 <br /><br /> <p>我修改一下</p><p>命令: (sublist (list 1 2 3 4) 2 7)<br/>(2 3 4)</p><p></p>liminnet 发表于 2008-10-17 16:59:00
liminnet 发表于 2008-10-17 17:36:00
caoyin 发表于 2008-10-17 18:08:00
<p>一个另类的写法:</p><p>(defun sublist (lst st len)<br/> (repeat (1- st) (setq lst (cdr lst)))<br/> (setq lst (reverse lst))<br/> (repeat (- (length lst) len) (setq lst (cdr lst)))<br/> (reverse lst)<br/>)</p>nonsmall 发表于 2008-10-17 18:33:00
局部变量都省下了 果然另类!
页:
[1]