找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 11638|回复: 23

[求助] 如何给表脱括号?

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-2 15:41:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

比如有这样的表 :

  ((("abc")) ((("faf "fasf))(("fasf" "fdf))) (("faf")))

如何变成:

  (("abc") (("faf "fasf)("fasf" "fdf)) ("faf"))

我知道穿衣服用LIST了,那么脱衣服用什么呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-7-2 16:12:22 | 显示全部楼层
本帖最后由 牢固 于 2013-7-2 23:09 编辑

  1. (defun f (l)  (mapcar
  2.     (function
  3.       (lambda (x)
  4.        (if (and (listp x) (cdr x))
  5.          (f x)
  6.          (if (listp x)
  7.         (car x)
  8.            x
  9.            )
  10.          )
  11.       )
  12.     )
  13.     l
  14.   )
  15. )
(setq l '(("a" "al")(("abc")) ((("faf" "fasf"))(("fasf" "fdf"))) (("faf"))))
(f l)
==>
(("a" "al") (("abc")) ((("faf" "fasf")) (("fasf" "fdf"))) (("faf")))



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-7-2 16:13:59 | 显示全部楼层
一般用 (apply 'append Lst)
不喜欢用 append 的用 cons car cdr

点评

给大家写一个不用append的吧。  详情 回复 发表于 2013-7-2 16:23
又是一个好主题,又可以讨论多种实现了。 命令: (mapcar '(lambda(x)(apply 'append x)) a) (("abc") (("faf" "fasf") ("fasf" "fdf")) ("faf"))  详情 回复 发表于 2013-7-2 16:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-2 16:14:09 | 显示全部楼层
本帖最后由 Lispboy 于 2013-7-2 16:16 编辑

  1. (defun tb (lst)
  2.   (mapcar
  3.     '(lambda (x)
  4.        (if (and
  5.              (= 'LIST (type x))
  6.              (/= 1 (length x))
  7.            )
  8.          (tb x)
  9.          (car x)
  10.        )
  11.      )
  12.     lst
  13.   )
  14. )

命令: (tb a)
(("abc") (("faf" "fasf") ("fasf" "fdf")) ("faf"))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-2 16:19:33 | 显示全部楼层
ayl1004 发表于 2013-7-2 16:13
一般用 (apply 'append Lst)
不喜欢用 append 的用 cons car cdr

又是一个好主题,又可以讨论多种实现了。

命令: (mapcar '(lambda(x)(apply 'append x)) a)
(("abc") (("faf" "fasf") ("fasf" "fdf")) ("faf"))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-2 16:23:45 | 显示全部楼层
ayl1004 发表于 2013-7-2 16:13
一般用 (apply 'append Lst)
不喜欢用 append 的用 cons car cdr

给大家写一个不用append的吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-2 16:26:38 | 显示全部楼层
命令: (apply 'append a)
(("abc") (("faf" "fasf")) (("fasf" "fdf")) ("faf"))

直接APPEND是这样的。不符合要求。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-7-2 16:42:53 | 显示全部楼层
  1. (defun func (lst)
  2.   (cond
  3.     ((not lst) nil)
  4.     ((not (car lst)) (func (cdr lst)))
  5.     (t (cons (caar lst) (func (cons (cdar lst) (cdr lst)))))
  6.   )
  7. )

点评

你这个还是用递归了,有不用递归的,也不用APPNED的方法吗?  详情 回复 发表于 2013-7-2 16:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-2 16:51:01 | 显示全部楼层

你这个还是用递归了,有不用递归的,也不用APPNED的方法吗?

点评

递归也不能用,只能用repeat和foreach,是不是速度反而更慢了  详情 回复 发表于 2013-7-2 17:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

发表于 2013-7-2 17:32:35 | 显示全部楼层
newer 发表于 2013-7-2 16:51
你这个还是用递归了,有不用递归的,也不用APPNED的方法吗?

递归也不能用,只能用repeat和foreach,是不是速度反而更慢了

点评

小数据用递归行,论坛测试过,好像到千的数据,递归就死翘翘了。  详情 回复 发表于 2013-7-2 18:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-7-2 18:28:40 | 显示全部楼层
循环好过递归,不过直接的APPEND比循环还慢?

点评

有测试数据吗,翔斑竹。  详情 回复 发表于 2013-7-2 18:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-2 18:43:03 | 显示全部楼层
炫翔 发表于 2013-7-2 18:28
循环好过递归,不过直接的APPEND比循环还慢?

有测试数据吗,翔斑竹。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-7-2 18:43:56 | 显示全部楼层
ayl1004 发表于 2013-7-2 17:32
递归也不能用,只能用repeat和foreach,是不是速度反而更慢了

小数据用递归行,论坛测试过,好像到千的数据,递归就死翘翘了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-3 03:18:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-3 08:54:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 08:15 , Processed in 0.275773 second(s), 69 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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