明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: aicr317

[基础] 列表转字符串

  [复制链接]
发表于 2009-11-4 01:29:00 | 显示全部楼层

还有更短的么?有

(defun tt (lst str)
   (setq a (car lst) b (cdr lst))(if b (strcat a "," (tt b str)) a)
)

发表于 2009-11-4 02:53:00 | 显示全部楼层

我认为,fsxm的程序好,精简,完善。

;;连结表中字符串
(defun Fsxm-join (lst str)
  (substr (apply 'strcat (mapcar '(lambda (a) (strcat str a)) lst))
   (1+ (strlen str))
  )
)

狂刀lxx的第二程序也还错,还用了递归调用,不过最好把a和b说明成局部变量,还有就是lst为nil时,两个程序的返回值不同,前者为"",后者为nil。

(defun tt (lst str / a b)
   (setq a (car lst) b (cdr lst))(if b (strcat a "," (tt b str)) a)
)

 楼主| 发表于 2009-11-4 08:34:00 | 显示全部楼层
都是八仙过海啊!
发表于 2009-11-4 09:24:00 | 显示全部楼层
狂刀lxx的第二程序,字串个数短时最优
但随着字串个数变多时效率递减
依本例时效率表现最佳,个数增至8-10倍时效率约略相等
发表于 2009-11-4 12:18:00 | 显示全部楼层

(defun fsxm-join (lst str / b)
 (setq b (car lst))
 (foreach a lst (setq b (strcat b str a)))
 b
)

再来一个用foreach速度可能更快点。

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

本版积分规则

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

GMT+8, 2024-10-1 17:31 , Processed in 0.189481 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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