这种方法无疑使我的方法简单得多
(defun LM:rtoslst ( l u p )
(if l
(if (atom l)
(rtos l u p)
(cons (LM:rtoslst (car l) u p) (LM:rtoslst (cdr l) u p))
)
)
) 李,
我认为你的会很快达到大列表中的堆栈限制。(它用1000个原子列表崩溃r12,用10000个原子列表崩溃A2k)
而且我认为这将是一个相当缓慢的过程-大卫 如果数据是静态的(已知的),那么我会使用:
(mapcar(函数(λ(x)(rtos x 2 2)))
如果静态性稍低(可能有一些错误数据),我仍然会使用以下内容:
(mapcar(函数(λ(x)(if(atom x)(rtos x 2 2)x)))
如果数据完全未知,那么我将采用类似于李提供的路线。 我想我更倾向于(数字)
(atom(cadr’(1 nil 3)))返回T
9
这将确保列表的长度至少相等-大卫 当然我不能争辩。这个概念实际上是一样的。
检查总是好的,但如果列表变得太未知,那么大多数时候我只会采用李提供的方法,然后继续(承受性能冲击,然后返回编码)。
如果我有一个混合列表,如:
(setq l1’(0.33 0.5 0.75(1.0(1.01)1.25(1.51.2.0)2.25 2.5零3.0 3.01 3.02 3.25 3.5 3.9 4.0))
哦,是的,当然-对于长列表,有很多信息被添加到堆栈中,我的帖子可能更具概念性。有这么多嵌套到未知级别的数据,我会重新考虑程序的早期阶段,以避免出现这种情况。
页:
1
[2]