语句更换表达
本帖最后由 菜卷鱼 于 2015-5-11 17:39 编辑(setq a '(1 2 3 4 ))
(setq b '(5 6 7 8 ))
要得到结果 ((1 5)(4 8))
实际上a 是我取得点集合的全部X坐标,b是我取得点集合的全部y坐标,
我想取对角点。
我目前用的方式以下的代码,句子写出来感觉难看;
(list(list (apply 'min a)(apply 'min b))(list (apply 'max a)(apply 'max b)))
测试用以下的代码也能达到一样的效果,但是感觉有点重复繁琐;
(list(mapcar '(lambda(x) (apply 'min x)) (list a b))
(mapcar '(lambda(x) (apply 'max x)) (list a b))
)
还有别的更简单更快的表达方式吗?最好是用匿名函数的。
另请参考 ACET 函数
acet-ent-geomextents
acet-geom-ss-extents (setq c (mapcar '(lambda (x y) (list x y)) a b))
(setq d (list (car c) (last c))) 我觉得
(list(list (apply 'min a)(apply 'min b))(list (apply 'max a)(apply 'max b)))
这样的代码,不仅不难看,反而是最简单易懂的。。 还要追求观感质量呀? 本帖最后由 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)) 楼上的这个双单引号用得不错 (mapcar '(lambda(x) (list(apply 'min x)(apply 'max x))) (list a b))
页:
[1]