明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[已解答] 求大师指点指点mapcar和foreach

[复制链接]
 楼主| 发表于 2014-5-8 12:05:22 | 显示全部楼层
哦,想起来了,问题2不需要用到mapcar

点评

(mapcar '(lambda(x)(list(car x)(cadr x)))lst)  发表于 2014-5-8 12:39
发表于 2014-5-8 12:37:15 | 显示全部楼层
77077 发表于 2014-5-8 11:53
;将双层表中的元素按列拼接
;-------------------------------------
(setq lst1 (list "R1" "R2" "R3")
...

问题1:
  1. (setq lst1 (list "R1" "R2" "R3")
  2.         lst2 (list "一类居住" "二类居住" "三类居住")
  3.         lst 'nil)
  4. (foreach x lst1(setq lst(append lst(list(strcat x(nth(vl-position x lst1)lst2))))))

问题2:
  1. (mapcar '(lambda(x)(list(car x)(cadr x)))lst)

或者
  1. (mapcar '(lambda(x)(vl-remove(last x)x)lst)

或者
  1. (setq lst1 'nil)(foreach x lst(setq lst1(append lst1(list(list(car x)(cadr x))))))

或者
  1. (setq lst1 'nil)(foreach x lst(setq lst1(append lst1(list(vl-remove(last x)x)))))

点评

太牛叉了,有没有学习笔记啊,求个来学习学习!  发表于 2014-5-8 16:38
 楼主| 发表于 2014-5-8 16:31:40 | 显示全部楼层
(setq lst '(("R1" "一类居住" "40%") ("R2" "二类居住" "35%") ("R3" "三类居住" "30%")))
(mapcar '(lambda(x) (strcat (car x)(cadr x))) lst)
==>("R1一类居住" "R2二类居住" "R3三类居住")

有点了解了,mapcar,我喜欢.再尝试下更难的!~~~

点评

我的经验是从不作笔记,会了就练到熟悉它,忘了再重新研究后再次写了熟悉它...  发表于 2014-5-8 18:43
 楼主| 发表于 2014-5-8 16:33:15 | 显示全部楼层
77077 发表于 2014-5-8 12:05
哦,想起来了,问题2不需要用到mapcar

我原先的想法是用repeat,没想到mapcar这么容易实现啊~~~
发表于 2015-7-4 17:08:06 | 显示全部楼层
感谢!感谢高手的分享!
发表于 2016-5-15 23:46:11 | 显示全部楼层
很有帮助,谢谢大神的解释
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 15:31 , Processed in 0.163993 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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