gS7 发表于 2022-7-6 06:42:27

λ

嘿伙计们,
 
我试图理解lambda函数,我需要你的帮助才能正确理解
 
示例:我创建了一个列表(List(0 0)(1 1)(2 2 2))
我试着把0.5的值加到列表中坐标点的x和y值上
 
告诉我如何使用lambda函数添加这些值
 
Mylist公司
(setq mylist (list '(0 0 0) '(1 1 1) '(2 2 2) '(3 3 3)))

Lee Mac 发表于 2022-7-6 06:50:01

(mapcar '(lambda ( x ) (mapcar '+ x '(0.5 0.5 0))) mylist)或
我的Mapcar和Lambda教程可能会帮助您掌握这个概念。

gS7 发表于 2022-7-6 06:54:24

李,太棒了。非常感谢
 
我还有一个关于相同lambda函数的问题
 
如何对列表中的最低坐标点进行排序

Lee Mac 发表于 2022-7-6 07:00:32

 
最低X、Y或Z坐标?

gS7 发表于 2022-7-6 07:05:32

李,
我想找到矩形的最低点
 
示例代码:
(setq corner_Points (list '(10.0 10.0 0.0) '(20.0 10.0 0.0) '(20.0 20.0 0.0) '(10.0 20.0 0.0)))
(setq x (mapcar 'car corner_points))
(setq y (mapcar 'cadr corner_points))
(setq lower (list (apply 'min x) (apply 'min y)))
(setq upper (list (apply 'max x) (apply 'max y)))
 
为此,我必须创建这么多变量

pBe 发表于 2022-7-6 07:06:45

Lambda,除点[角点]外没有变量
 
((lambda (x y z)
(list (list (y (car x)) (y (cadr x)))
(list (z (car x)) (z (cadr x)))
)
)
(list        (mapcar 'car corner_points)
(mapcar 'cadr corner_points)
)
(lambda (i) (apply 'min i))
(lambda (i) (apply 'max i))
)

gS7 发表于 2022-7-6 07:10:40

Pbe非常感谢您的澄清
 
但也需要一些时间来理解

pBe 发表于 2022-7-6 07:18:31

我个人并不反对创建变量,您的代码可以这样编写:
 
(defun _HiLow (pts)
(list        (list (apply 'min (setq x (mapcar 'car pts)))
      (apply 'min (setq y (mapcar 'cadr pts)))
)
(list (apply 'max x) (apply 'max y))
)
)
 
(\u HiLow corner\u Points)将在用作辅助程序例程时提供相同的结果。[即,如果您需要一次提取两个或多个点列表的低点和高点]
 
HTH公司

Lee Mac 发表于 2022-7-6 07:21:08

 
6

gS7 发表于 2022-7-6 07:28:36

@Pbe,再次感谢你
 
子函数是我认为更好的方法
页: [1] 2
查看完整版本: λ