Lisp的第二个循环不工作
嗨!!我的程序假设在2个列表(ptinslist和li)中循环以应用翻译函数。。第一个循环有效,但k循环无效
plzz帮助
(setq k 0)
(setq j 0)
(虽然(
(而(
(setq tran(翻译(第n k个ptinslist)(第n个j li)))
(setq nvlist(append nvlist(list tran)))
(setq j(+j 1))
)
(setq all(append all(list nvlist)))
(setq k(+k 1))
) 我已经把你帖子的标题改成了更具描述性的标题,请以后使用更具描述性的标题,这会有所帮助。 您的代码片段相当混乱,但我认为您可以使用mapcar+lambda实现您想要的。
如。
(mapcar '(lambda (a b) (translate a b))
ptinlist
li
)
顺便说一句,translate不是原生函数,所以我假设它是您编写的函数。如果你想要的是trans,那么你需要三个参数,而不是两个。 好的,老虎,我会的,谢谢
alanjit yes translate是一个函数:
(defun translate(pt1 pt2/)
(mapcar’+pt1 pt2)
但是我需要循环两个列表(两个列表的长度是4) (mapcar '(lambda (a b) (apply 'mapcar (cons '+ (list a b))))
ptinlist
li
) 如果你打算继续使用你的原始代码,我建议它的编写类似于下面的内容-用于neatnes等。
在这一点上,我支持alanjt,因为你在遍历列表,尽管我认为需要这样做
这取决于您试图实现的目标:如果您试图将LCORD中的每个点与Lins中的每个点进行转换,那么上面的mapcar集群可能就是您想要的。如果您试图针对每个列表各自的坐标运行translate,例如
然后你想接受alanjt的建议——我相信这就是你想要的;您收到的代码正在尝试执行我提供的解决方案。
希望有帮助
编辑:在有人开枪打我之前;所有代码都是在响应线程区域编写的,因此没有经过测试。除了可能出现额外的右括号或语法错误外,该原则是合理的。 如果使用子程序,我认为应该如下所示:
5 谢谢大家,我会试试这个并回复
对于我尝试执行的代码:
(setq lins(列表0 10 20))
(setq LCORD(列表5 60 80))
;示例点
(翻译(第n个0 lins)(第n个0 LCORD))
(翻译(第n个0 lins)(第n个1 LCORD))
(翻译(第n个0 lins)(第n个2 LCORD))
(翻译(第n个1 lins)(第n个0 LCORD))
(翻译(第n个1 lins)(第n个1 LCORD))
(翻译(第n个1 lins)(第n个2 LCORD))
(翻译(第n个2 lins)(第n个0 LCORD))
(翻译(第n个2 LIN)(第n个1 LCORD))
(翻译(第n个2 lins)(第n个2 LCORD)) 我很困惑,这是一个点列表还是一个整数列表?
点:'((0.0.0。)(0. 1. 1.) (1. 1. 1.))
整数:'(0 1 2 3 4 5 6) no i'ts a list of points actually they are coordinate不,i'ts a list of points,实际上它们是坐标
页:
[1]
2