如何获取集合中的所有数字
lisp吧
全部回复
仅看楼主
level 1
nierixin
楼主
lisp 初学者 遇到问题 求解决
比如 有个集合 ‘(((1)(2))(5)(3)((8)3)
(printe '(((1)(2))(5)(3)((8)3)))
如何使用 自定义的printe 函数 把所有数字打印出来 只要数字 不要括号
2017年08月15日 00点08分
1
level 7
狙击手考拉
onlisp里有个函数:flatten
(defun flatten (x)
(labels ((rec (x acc)
(cond ((null x) acc)
((atom x) (cons x acc))
(t (rec (car x) (rec (cdr x) acc))))))
(rec x nil)))
(defvar data '(((1)(2))(5)(3)((8)3)))
2017年08月16日 13点08分
2
nierixin
谢谢
2017年08月17日 10点08分
level 1
刘释之17
对于以列表表示的树,有很多操作,比如删除树中指定的元素,向树中指定位置添加元素,统计符合条件的元素,替换等等,这些操作若以递归完成将是比较复杂又容易出差的,好在递归可以用迭代的形式表达,所以我的策略是将参数表内的所有元素收集到一个表内且加上序号,将树形结构转换成线性结构,这样以来除了少数操作,大都可以基于这个表完成。
2017年08月17日 22点08分
3
level 1
刘释之17
对于以列表表示的树,有很多操作,比如删除树中指定的元素,向树中指定位置添加元素,统计符合条件的元素,替换等等,这些操作若以递归完成将是比较复杂又容易出差的,好在递归可以用迭代的形式表达,所以我的策略是将参数表内的所有元素收集到一个表内且加上序号,将树形结构转换成线性结构,这样以来除了少数操作,大都可以基于这个表完成。
2017年08月17日 22点08分
4
1