明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 920|回复: 7

[讨论] 语句更换表达

[复制链接]
发表于 2015-5-11 17:35:05 | 显示全部楼层 |阅读模式
本帖最后由 菜卷鱼 于 2015-5-11 17:39 编辑

  1. (setq a '(1 2 3 4 ))
  2. (setq b '(5 6 7 8 ))

要得到结果 ((1 5)(4 8))
实际上a 是我取得点集合的全部X坐标,b是我取得点集合的全部y坐标,
我想取对角点。
我目前用的方式以下的代码,句子写出来感觉难看;
  1. (list(list (apply 'min a)(apply 'min b))(list (apply 'max a)(apply 'max b)))

测试用以下的代码也能达到一样的效果,但是感觉有点重复繁琐;
  1. (list  (mapcar '(lambda(x) (apply 'min x)) (list a b))
  2.        (mapcar '(lambda(x) (apply 'max x)) (list a b))
  3. )


还有别的更简单更快的表达方式吗?最好是用匿名函数的。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-5-11 20:59:45 | 显示全部楼层
另请参考 ACET 函数
acet-ent-geomextents
acet-geom-ss-extents
发表于 2015-5-12 13:08:11 | 显示全部楼层
  1. (setq c (mapcar '(lambda (x y) (list x y)) a b))
  2. (setq d (list (car c) (last c)))
发表于 2015-5-12 14:24:47 | 显示全部楼层
我觉得

(list(list (apply 'min a)(apply 'min b))(list (apply 'max a)(apply 'max b)))

这样的代码,不仅不难看,反而是最简单易懂的。。
发表于 2015-6-30 14:04:41 | 显示全部楼层
还要追求观感质量呀?
发表于 2015-6-30 15:31:00 | 显示全部楼层
本帖最后由 lijiao 于 2015-6-30 16:03 编辑

(setq ab (mapcar 'vl-sort (list a b) '(< <)))
(list (mapcar 'car ab) (mapcar 'cadr ab))

(mapcar ''((x) (mapcar x ab)) '(car cadr))
发表于 2015-6-30 21:43:21 | 显示全部楼层
楼上的这个双单引号用得不错
 楼主| 发表于 2018-8-25 17:25:26 | 显示全部楼层
  1. (mapcar '(lambda(x) (list(apply 'min x)(apply 'max x))) (list a b))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 06:46 , Processed in 0.165619 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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