Lee Mac 发表于 2022-7-6 11:03:32

 
这种方法无疑使我的方法简单得多
 

(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))
   )
)
)

David Bethel 发表于 2022-7-6 11:06:38

李,
 
我认为你的会很快达到大列表中的堆栈限制。(它用1000个原子列表崩溃r12,用10000个原子列表崩溃A2k)
 
而且我认为这将是一个相当缓慢的过程-大卫

Se7en 发表于 2022-7-6 11:12:03

如果数据是静态的(已知的),那么我会使用:
(mapcar(函数(λ(x)(rtos x 2 2)))
 
如果静态性稍低(可能有一些错误数据),我仍然会使用以下内容:
(mapcar(函数(λ(x)(if(atom x)(rtos x 2 2)x)))
 
如果数据完全未知,那么我将采用类似于李提供的路线。

David Bethel 发表于 2022-7-6 11:17:25

我想我更倾向于(数字)
 
(atom(cadr’(1 nil 3)))返回T
 
9
 
这将确保列表的长度至少相等-大卫

Se7en 发表于 2022-7-6 11:21:07

当然我不能争辩。这个概念实际上是一样的。
 
检查总是好的,但如果列表变得太未知,那么大多数时候我只会采用李提供的方法,然后继续(承受性能冲击,然后返回编码)。
 
如果我有一个混合列表,如:
(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))

Lee Mac 发表于 2022-7-6 11:22:55

 
哦,是的,当然-对于长列表,有很多信息被添加到堆栈中,我的帖子可能更具概念性。有这么多嵌套到未知级别的数据,我会重新考虑程序的早期阶段,以避免出现这种情况。
页: 1 [2]
查看完整版本: 将(rtos x 2 2)应用于lis